diff --git a/bench/Main.hs b/bench/Main.hs
new file mode 100644
--- /dev/null
+++ b/bench/Main.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+import Control.Exception (throwIO)
+import Criterion.Main (Benchmark, defaultMain, env, bgroup, bench, nf)
+import Filesystem.Path.CurrentOS (FilePath)
+import Morte.Core (Expr, X)
+import Paths_morte (getDataFileName)
+import Prelude hiding (FilePath)
+
+import qualified Data.Text.Lazy.IO         as Text
+import qualified Filesystem.Path.CurrentOS as Filesystem
+import qualified Morte.Core                as Morte
+import qualified Morte.Import              as Morte
+import qualified Morte.Parser              as Morte
+
+readMorteFile :: FilePath -> IO (Expr X)
+readMorteFile filename = do
+    str <- getDataFileName (Filesystem.encodeString filename)
+    text <- Text.readFile str
+    case Morte.exprFromText text of
+        Left  e    -> throwIO e
+        Right expr -> Morte.load expr
+
+main :: IO ()
+main = defaultMain
+    [ env srcEnv (\ ~(x0, x1, x2) ->
+        bgroup "source"
+            [ benchExpr "recursive.mt" x0
+            , benchExpr "factorial.mt" x1
+            , benchExpr "concat.mt" x2
+            ] )
+    ]
+  where
+    srcEnv = do
+        x0 <- readMorteFile "bench/src/recursive.mt"
+        x1 <- readMorteFile "bench/src/factorial.mt"
+        x2 <- readMorteFile "bench/src/concat.mt"
+        return (x0, x1, x2)
+
+benchExpr :: FilePath -> Expr X -> Benchmark
+benchExpr path expr = bgroup (Filesystem.encodeString path)
+    [ bench "normalize" (nf Morte.normalize expr)
+    , bench "equality"  (nf (expr ==)       expr)
+    , bench "typeOf"    (nf Morte.typeOf    expr)
+    ]
diff --git a/bench/src/concat.mt b/bench/src/concat.mt
new file mode 100644
--- /dev/null
+++ b/bench/src/concat.mt
@@ -0,0 +1,1 @@
+λ(strs : ∀(List : *) → ∀(Cons : ∀(head : ∀(B : *) → ∀(N : B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → B) → ∀(tail : List) → List) → ∀(Nil : List) → List) → strs (∀(B : *) → ∀(N : B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → B) (λ(n1 : ∀(B : *) → ∀(N : B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → B) → λ(n2 : ∀(B : *) → ∀(N : B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → ∀(C : B → B) → B) → λ(B : *) → λ(N : B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → n1 B (n2 B N C@255 C@254 C@253 C@252 C@251 C@250 C@249 C@248 C@247 C@246 C@245 C@244 C@243 C@242 C@241 C@240 C@239 C@238 C@237 C@236 C@235 C@234 C@233 C@232 C@231 C@230 C@229 C@228 C@227 C@226 C@225 C@224 C@223 C@222 C@221 C@220 C@219 C@218 C@217 C@216 C@215 C@214 C@213 C@212 C@211 C@210 C@209 C@208 C@207 C@206 C@205 C@204 C@203 C@202 C@201 C@200 C@199 C@198 C@197 C@196 C@195 C@194 C@193 C@192 C@191 C@190 C@189 C@188 C@187 C@186 C@185 C@184 C@183 C@182 C@181 C@180 C@179 C@178 C@177 C@176 C@175 C@174 C@173 C@172 C@171 C@170 C@169 C@168 C@167 C@166 C@165 C@164 C@163 C@162 C@161 C@160 C@159 C@158 C@157 C@156 C@155 C@154 C@153 C@152 C@151 C@150 C@149 C@148 C@147 C@146 C@145 C@144 C@143 C@142 C@141 C@140 C@139 C@138 C@137 C@136 C@135 C@134 C@133 C@132 C@131 C@130 C@129 C@128 C@127 C@126 C@125 C@124 C@123 C@122 C@121 C@120 C@119 C@118 C@117 C@116 C@115 C@114 C@113 C@112 C@111 C@110 C@109 C@108 C@107 C@106 C@105 C@104 C@103 C@102 C@101 C@100 C@99 C@98 C@97 C@96 C@95 C@94 C@93 C@92 C@91 C@90 C@89 C@88 C@87 C@86 C@85 C@84 C@83 C@82 C@81 C@80 C@79 C@78 C@77 C@76 C@75 C@74 C@73 C@72 C@71 C@70 C@69 C@68 C@67 C@66 C@65 C@64 C@63 C@62 C@61 C@60 C@59 C@58 C@57 C@56 C@55 C@54 C@53 C@52 C@51 C@50 C@49 C@48 C@47 C@46 C@45 C@44 C@43 C@42 C@41 C@40 C@39 C@38 C@37 C@36 C@35 C@34 C@33 C@32 C@31 C@30 C@29 C@28 C@27 C@26 C@25 C@24 C@23 C@22 C@21 C@20 C@19 C@18 C@17 C@16 C@15 C@14 C@13 C@12 C@11 C@10 C@9 C@8 C@7 C@6 C@5 C@4 C@3 C@2 C@1 C) C@255 C@254 C@253 C@252 C@251 C@250 C@249 C@248 C@247 C@246 C@245 C@244 C@243 C@242 C@241 C@240 C@239 C@238 C@237 C@236 C@235 C@234 C@233 C@232 C@231 C@230 C@229 C@228 C@227 C@226 C@225 C@224 C@223 C@222 C@221 C@220 C@219 C@218 C@217 C@216 C@215 C@214 C@213 C@212 C@211 C@210 C@209 C@208 C@207 C@206 C@205 C@204 C@203 C@202 C@201 C@200 C@199 C@198 C@197 C@196 C@195 C@194 C@193 C@192 C@191 C@190 C@189 C@188 C@187 C@186 C@185 C@184 C@183 C@182 C@181 C@180 C@179 C@178 C@177 C@176 C@175 C@174 C@173 C@172 C@171 C@170 C@169 C@168 C@167 C@166 C@165 C@164 C@163 C@162 C@161 C@160 C@159 C@158 C@157 C@156 C@155 C@154 C@153 C@152 C@151 C@150 C@149 C@148 C@147 C@146 C@145 C@144 C@143 C@142 C@141 C@140 C@139 C@138 C@137 C@136 C@135 C@134 C@133 C@132 C@131 C@130 C@129 C@128 C@127 C@126 C@125 C@124 C@123 C@122 C@121 C@120 C@119 C@118 C@117 C@116 C@115 C@114 C@113 C@112 C@111 C@110 C@109 C@108 C@107 C@106 C@105 C@104 C@103 C@102 C@101 C@100 C@99 C@98 C@97 C@96 C@95 C@94 C@93 C@92 C@91 C@90 C@89 C@88 C@87 C@86 C@85 C@84 C@83 C@82 C@81 C@80 C@79 C@78 C@77 C@76 C@75 C@74 C@73 C@72 C@71 C@70 C@69 C@68 C@67 C@66 C@65 C@64 C@63 C@62 C@61 C@60 C@59 C@58 C@57 C@56 C@55 C@54 C@53 C@52 C@51 C@50 C@49 C@48 C@47 C@46 C@45 C@44 C@43 C@42 C@41 C@40 C@39 C@38 C@37 C@36 C@35 C@34 C@33 C@32 C@31 C@30 C@29 C@28 C@27 C@26 C@25 C@24 C@23 C@22 C@21 C@20 C@19 C@18 C@17 C@16 C@15 C@14 C@13 C@12 C@11 C@10 C@9 C@8 C@7 C@6 C@5 C@4 C@3 C@2 C@1 C) (λ(B : *) → λ(N : B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → λ(C : B → B) → N)
diff --git a/bench/src/factorial.mt b/bench/src/factorial.mt
new file mode 100644
--- /dev/null
+++ b/bench/src/factorial.mt
@@ -0,0 +1,99 @@
+(  \(Nat : *)
+-> \(Succ : Nat -> Nat)
+-> \(Zero : Nat)
+-> \(mult : Nat -> Nat -> Nat)
+-> \(foldNat : Nat -> forall (r : *) -> (r -> r) -> r -> r)
+-> \(Pair : * -> *)
+-> \(_P    : forall (a : *) -> a -> a -> Pair a)
+-> \(_fst  : forall (a : *) -> Pair a -> a)
+-> \(_snd  : forall (a : *) -> Pair a -> a)
+-> (  \(NPair : *)
+   -> \(P : Nat -> Nat -> NPair)
+   -> \(fst : NPair -> Nat)
+   -> \(snd : NPair -> Nat)
+   -> \(mi  : Nat)
+   -> \(n : Nat)
+   -> (  \(pfact : NPair -> NPair) 
+      -> snd (foldNat n NPair pfact (P Zero mi))
+      )
+
+      (  \(p : NPair)
+      -> (\(sfp : Nat) -> P sfp (mult (snd p) sfp)) (Succ (fst p))
+      )
+   )
+
+  -- NPair
+  (Pair Nat)
+
+  -- P
+  (_P Nat)
+
+  -- fst
+  (_fst Nat)
+
+  -- snd
+  (_snd Nat)
+
+  -- multiplicative identity
+  (Succ Zero)
+
+  -- 7
+  (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))
+
+)
+
+-- Nat
+(forall (nat : *) -> (nat -> nat) -> nat -> nat)
+
+-- Succ data constructor
+(  \(n : forall (nat : *) -> (nat -> nat) -> nat -> nat)
+-> \(nat : *)
+-> \(Succ : nat -> nat)
+-> \(Zero : nat)
+-> Succ (n nat Succ Zero)
+)
+
+-- Zero data constructor
+(  \(nat : *)
+-> \(Succ : nat -> nat)
+-> \(Zero : nat)
+-> Zero
+)
+
+-- mult
+(  \(a : |~| (nat : *) -> (nat -> nat) -> nat -> nat)
+-> \(b : forall (nat : *) -> (nat -> nat) -> nat -> nat)
+-> \(nat : *)
+-> \(Succ : nat -> nat)
+-> \(Zero : nat)
+-> (a nat) (b nat Succ) Zero
+)
+
+-- foldNat
+(  \(n : forall (r : *) -> (r -> r) -> r -> r)
+-> n
+)
+
+-- MonoPair
+(\(a : *) -> forall (r : *) -> (a -> a -> r) -> r)
+
+-- P
+(  \(a : *)
+-> \(va : a)
+-> \(vb : a)
+-> \(r : *)
+-> \(Pair : a -> a -> r)
+-> Pair va vb
+)
+
+-- fst
+(  \(a : *)
+-> \(p : forall (r : *) -> (a -> a -> r) -> r)
+-> p a (\(x : a) -> \(_ : a) -> x)
+)
+
+-- snd
+(  \(a : *)
+-> \(p : forall (r : *) -> (a -> a -> r) -> r)
+-> p a (\(_ : a) -> \(x : a) -> x)
+)
diff --git a/bench/src/recursive.mt b/bench/src/recursive.mt
new file mode 100644
--- /dev/null
+++ b/bench/src/recursive.mt
@@ -0,0 +1,186 @@
+-- "Free" variables
+(   \(String : *   )
+->  \(U : *)
+->  \(Unit : U)
+
+    -- Simple prelude
+->  (   \(Nat : *)
+    ->  \(zero : Nat)
+    ->  \(one : Nat)
+    ->  \((+) : Nat -> Nat -> Nat)
+    ->  \((*) : Nat -> Nat -> Nat)
+    ->  \(foldNat : Nat -> forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(IO : * -> *)
+    ->  \(return : forall (a : *) -> a -> IO a)
+    ->  \((>>=)
+        :   forall (a : *)
+        ->  forall (b : *)
+        ->  IO a
+        ->  (a -> IO b)
+        ->  IO b
+        )
+    ->  \(putStrLn : String -> IO U)
+    ->  \(getLine : IO String)
+
+        -- Derived functions
+    ->  (   \((>>) : IO U -> IO U -> IO U)
+        ->  \(two   : Nat)
+        ->  \(three : Nat)
+        ->  \(four  : Nat)
+        ->  \(five  : Nat)
+        ->  \(six   : Nat)
+        ->  \(seven : Nat)
+        ->  \(eight : Nat)
+        ->  \(nine  : Nat)
+        ->  \(ten   : Nat)
+        ->  (   \(replicateM_ : Nat -> IO U -> IO U)
+            ->  \(ninetynine : Nat)
+            ->  replicateM_ ninetynine ((>>=) String U getLine putStrLn)
+            )
+
+            -- replicateM_
+            (   \(n : Nat)
+            ->  \(io : IO U)
+            ->  foldNat n (IO U) ((>>) io) (return U Unit)
+            )
+
+            -- ninetynine
+            ((+) ((*) nine ten) nine)
+        )
+
+        -- (>>)
+        (   \(m : IO U)
+        ->  \(n : IO U)
+        ->  (>>=) U U m (\(_ : U) -> n)
+        )
+
+        -- two
+        ((+) one one)
+
+        -- three
+        ((+) one ((+) one one))
+
+        -- four
+        ((+) one ((+) one ((+) one one)))
+
+        -- five
+        ((+) one ((+) one ((+) one ((+) one one))))
+
+        -- six
+        ((+) one ((+) one ((+) one ((+) one ((+) one one)))))
+
+        -- seven
+        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one))))))
+
+        -- eight
+        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one)))))))
+        -- nine
+        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one))))))))
+
+        -- ten
+        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one)))))))))
+    )
+
+    -- Nat
+    (   forall (a : *)
+    ->  (a -> a)
+    ->  a
+    ->  a
+    )
+
+    -- zero
+    (   \(a : *)
+    ->  \(Succ : a -> a)
+    ->  \(Zero : a)
+    ->  Zero
+    )
+
+    -- one
+    (   \(a : *)
+    ->  \(Succ : a -> a)
+    ->  \(Zero : a)
+    ->  Succ Zero
+    )
+
+    -- (+)
+    (   \(m : forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(n : forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(a : *)
+    ->  \(Succ : a -> a)
+    ->  \(Zero : a)
+    ->  m a Succ (n a Succ Zero)
+    )
+
+    -- (*)
+    (   \(m : forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(n : forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(a : *)
+    ->  \(Succ : a -> a)
+    ->  \(Zero : a)
+    ->  m a (n a Succ) Zero
+    )
+
+    -- foldNat
+    (   \(n : forall (a : *) -> (a -> a) -> a -> a)
+    ->  n
+    )
+
+    -- IO
+    (   \(r : *)
+    ->  forall (x : *)
+    ->  (String -> x -> x)
+    ->  ((String -> x) -> x)
+    ->  (r -> x)
+    ->  x
+    )
+
+    -- return
+    (   \(a : *)
+    ->  \(va : a)
+    ->  \(x : *)
+    ->  \(PutStrLn : String -> x -> x)
+    ->  \(GetLine : (String -> x) -> x)
+    ->  \(Return : a -> x)
+    ->  Return va
+    )
+
+    -- (>>=)
+    (   \(a : *)
+    ->  \(b : *)
+    ->  \(m : forall (x : *)
+        ->  (String -> x -> x)
+        ->  ((String -> x) -> x)
+        ->  (a -> x)
+        ->  x
+        )
+    ->  \(f : a
+        ->  forall (x : *)
+        -> (String -> x -> x)
+        -> ((String -> x) -> x)
+        -> (b -> x)
+        -> x
+        )
+    ->  \(x : *)
+    ->  \(PutStrLn : String -> x -> x)
+    ->  \(GetLine : (String -> x) -> x)
+    ->  \(Return : b -> x)
+    ->  m x PutStrLn GetLine (\(va : a) -> f va x PutStrLn GetLine Return)
+    )
+
+    -- putStrLn
+    (   \(str : String)
+    ->  \(x : *)
+    ->  \(PutStrLn : String -> x -> x  )
+    ->  \(GetLine  : (String -> x) -> x)
+    ->  \(Return   : U -> x)
+    ->  PutStrLn str (Return Unit)
+    )
+
+    -- getLine
+    (   \(x : *)
+    ->  \(PutStrLn : String -> x -> x  )
+    ->  \(GetLine  : (String -> x) -> x)
+    ->  \(Return   : String -> x)
+    -> GetLine Return
+    )
+)
diff --git a/benchmarks/Bench.hs b/benchmarks/Bench.hs
deleted file mode 100644
--- a/benchmarks/Bench.hs
+++ /dev/null
@@ -1,59 +0,0 @@
-module Main (main) where
-
-import Morte.Core
-import Morte.Import (load)
-import Morte.Parser (ParseError, exprFromText)
-
-import Control.Monad     (foldM)
-import Criterion.Main    (Benchmark, defaultMain, env, bgroup, bench, nf)
-import Data.Text.Lazy    (Text)
-import qualified Data.Text.Lazy as T
-import Data.Text.Lazy.IO (readFile, hPutStrLn)
-import GHC.IO.Handle.FD  (stderr)
-import Paths_morte       (getDataFileName)
-import Prelude hiding    (readFile)
-
-benchFilenames :: [String]
-benchFilenames = [
-      "recursive.mt"
-    , "factorial.mt"
-    ]
-
-readMtFile :: String -> IO (String, Text)
-readMtFile filename = do
-    path   <- getDataFileName filename
-    mtFile <- readFile path
-    return (filename, mtFile)
-
-partitionExpr
-    :: ([(String, ParseError)],[(String, Expr X)])
-    -> (String, Text)
-    -> IO ([(String, ParseError)],[(String, Expr X)])
-partitionExpr (pe, ps) (filename, contents) =
-    case exprFromText contents of
-        Left  perr -> return ((filename,perr):pe,ps)
-        Right expr -> do
-            expr' <- load expr
-            return (pe,(filename,expr'):ps)
-
-pprFileParseError :: (String, ParseError) -> Text
-pprFileParseError (fn,pe) = T.unlines [T.pack fn, pretty pe]
-
-srcEnv :: IO [(String, Expr X)]
-srcEnv = do
-    mtFiles <- mapM readMtFile benchFilenames
-    (pe,ps) <- foldM partitionExpr ([],[]) mtFiles
-    mapM_ (hPutStrLn stderr . pprFileParseError) pe
-    return ps
-
-main :: IO ()
-main = defaultMain [
-      env srcEnv $ bgroup "source" . map benchExpr
-    ]
-
-benchExpr :: (String, Expr X) -> Benchmark
-benchExpr (tag,expr) = bgroup tag [
-      bench "normalize" $ nf normalize expr
-    , bench "equality"  $ nf (expr ==) expr
-    , bench "typeOf"    $ nf typeOf    expr
-    ]
diff --git a/benchmarks/src/factorial.mt b/benchmarks/src/factorial.mt
deleted file mode 100644
--- a/benchmarks/src/factorial.mt
+++ /dev/null
@@ -1,99 +0,0 @@
-(  \(Nat : *)
--> \(Succ : Nat -> Nat)
--> \(Zero : Nat)
--> \(mult : Nat -> Nat -> Nat)
--> \(foldNat : Nat -> forall (r : *) -> (r -> r) -> r -> r)
--> \(Pair : * -> *)
--> \(_P    : forall (a : *) -> a -> a -> Pair a)
--> \(_fst  : forall (a : *) -> Pair a -> a)
--> \(_snd  : forall (a : *) -> Pair a -> a)
--> (  \(NPair : *)
-   -> \(P : Nat -> Nat -> NPair)
-   -> \(fst : NPair -> Nat)
-   -> \(snd : NPair -> Nat)
-   -> \(mi  : Nat)
-   -> \(n : Nat)
-   -> (  \(pfact : NPair -> NPair) 
-      -> snd (foldNat n NPair pfact (P Zero mi))
-      )
-
-      (  \(p : NPair)
-      -> (\(sfp : Nat) -> P sfp (mult (snd p) sfp)) (Succ (fst p))
-      )
-   )
-
-  -- NPair
-  (Pair Nat)
-
-  -- P
-  (_P Nat)
-
-  -- fst
-  (_fst Nat)
-
-  -- snd
-  (_snd Nat)
-
-  -- multiplicative identity
-  (Succ Zero)
-
-  -- 7
-  (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))
-
-)
-
--- Nat
-(forall (nat : *) -> (nat -> nat) -> nat -> nat)
-
--- Succ data constructor
-(  \(n : forall (nat : *) -> (nat -> nat) -> nat -> nat)
--> \(nat : *)
--> \(Succ : nat -> nat)
--> \(Zero : nat)
--> Succ (n nat Succ Zero)
-)
-
--- Zero data constructor
-(  \(nat : *)
--> \(Succ : nat -> nat)
--> \(Zero : nat)
--> Zero
-)
-
--- mult
-(  \(a : |~| (nat : *) -> (nat -> nat) -> nat -> nat)
--> \(b : forall (nat : *) -> (nat -> nat) -> nat -> nat)
--> \(nat : *)
--> \(Succ : nat -> nat)
--> \(Zero : nat)
--> (a nat) (b nat Succ) Zero
-)
-
--- foldNat
-(  \(n : forall (r : *) -> (r -> r) -> r -> r)
--> n
-)
-
--- MonoPair
-(\(a : *) -> forall (r : *) -> (a -> a -> r) -> r)
-
--- P
-(  \(a : *)
--> \(va : a)
--> \(vb : a)
--> \(r : *)
--> \(Pair : a -> a -> r)
--> Pair va vb
-)
-
--- fst
-(  \(a : *)
--> \(p : forall (r : *) -> (a -> a -> r) -> r)
--> p a (\(x : a) -> \(_ : a) -> x)
-)
-
--- snd
-(  \(a : *)
--> \(p : forall (r : *) -> (a -> a -> r) -> r)
--> p a (\(_ : a) -> \(x : a) -> x)
-)
diff --git a/benchmarks/src/recursive.mt b/benchmarks/src/recursive.mt
deleted file mode 100644
--- a/benchmarks/src/recursive.mt
+++ /dev/null
@@ -1,186 +0,0 @@
--- "Free" variables
-(   \(String : *   )
-->  \(U : *)
-->  \(Unit : U)
-
-    -- Simple prelude
-->  (   \(Nat : *)
-    ->  \(zero : Nat)
-    ->  \(one : Nat)
-    ->  \((+) : Nat -> Nat -> Nat)
-    ->  \((*) : Nat -> Nat -> Nat)
-    ->  \(foldNat : Nat -> forall (a : *) -> (a -> a) -> a -> a)
-    ->  \(IO : * -> *)
-    ->  \(return : forall (a : *) -> a -> IO a)
-    ->  \((>>=)
-        :   forall (a : *)
-        ->  forall (b : *)
-        ->  IO a
-        ->  (a -> IO b)
-        ->  IO b
-        )
-    ->  \(putStrLn : String -> IO U)
-    ->  \(getLine : IO String)
-
-        -- Derived functions
-    ->  (   \((>>) : IO U -> IO U -> IO U)
-        ->  \(two   : Nat)
-        ->  \(three : Nat)
-        ->  \(four  : Nat)
-        ->  \(five  : Nat)
-        ->  \(six   : Nat)
-        ->  \(seven : Nat)
-        ->  \(eight : Nat)
-        ->  \(nine  : Nat)
-        ->  \(ten   : Nat)
-        ->  (   \(replicateM_ : Nat -> IO U -> IO U)
-            ->  \(ninetynine : Nat)
-            ->  replicateM_ ninetynine ((>>=) String U getLine putStrLn)
-            )
-
-            -- replicateM_
-            (   \(n : Nat)
-            ->  \(io : IO U)
-            ->  foldNat n (IO U) ((>>) io) (return U Unit)
-            )
-
-            -- ninetynine
-            ((+) ((*) nine ten) nine)
-        )
-
-        -- (>>)
-        (   \(m : IO U)
-        ->  \(n : IO U)
-        ->  (>>=) U U m (\(_ : U) -> n)
-        )
-
-        -- two
-        ((+) one one)
-
-        -- three
-        ((+) one ((+) one one))
-
-        -- four
-        ((+) one ((+) one ((+) one one)))
-
-        -- five
-        ((+) one ((+) one ((+) one ((+) one one))))
-
-        -- six
-        ((+) one ((+) one ((+) one ((+) one ((+) one one)))))
-
-        -- seven
-        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one))))))
-
-        -- eight
-        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one)))))))
-        -- nine
-        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one))))))))
-
-        -- ten
-        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one)))))))))
-    )
-
-    -- Nat
-    (   forall (a : *)
-    ->  (a -> a)
-    ->  a
-    ->  a
-    )
-
-    -- zero
-    (   \(a : *)
-    ->  \(Succ : a -> a)
-    ->  \(Zero : a)
-    ->  Zero
-    )
-
-    -- one
-    (   \(a : *)
-    ->  \(Succ : a -> a)
-    ->  \(Zero : a)
-    ->  Succ Zero
-    )
-
-    -- (+)
-    (   \(m : forall (a : *) -> (a -> a) -> a -> a)
-    ->  \(n : forall (a : *) -> (a -> a) -> a -> a)
-    ->  \(a : *)
-    ->  \(Succ : a -> a)
-    ->  \(Zero : a)
-    ->  m a Succ (n a Succ Zero)
-    )
-
-    -- (*)
-    (   \(m : forall (a : *) -> (a -> a) -> a -> a)
-    ->  \(n : forall (a : *) -> (a -> a) -> a -> a)
-    ->  \(a : *)
-    ->  \(Succ : a -> a)
-    ->  \(Zero : a)
-    ->  m a (n a Succ) Zero
-    )
-
-    -- foldNat
-    (   \(n : forall (a : *) -> (a -> a) -> a -> a)
-    ->  n
-    )
-
-    -- IO
-    (   \(r : *)
-    ->  forall (x : *)
-    ->  (String -> x -> x)
-    ->  ((String -> x) -> x)
-    ->  (r -> x)
-    ->  x
-    )
-
-    -- return
-    (   \(a : *)
-    ->  \(va : a)
-    ->  \(x : *)
-    ->  \(PutStrLn : String -> x -> x)
-    ->  \(GetLine : (String -> x) -> x)
-    ->  \(Return : a -> x)
-    ->  Return va
-    )
-
-    -- (>>=)
-    (   \(a : *)
-    ->  \(b : *)
-    ->  \(m : forall (x : *)
-        ->  (String -> x -> x)
-        ->  ((String -> x) -> x)
-        ->  (a -> x)
-        ->  x
-        )
-    ->  \(f : a
-        ->  forall (x : *)
-        -> (String -> x -> x)
-        -> ((String -> x) -> x)
-        -> (b -> x)
-        -> x
-        )
-    ->  \(x : *)
-    ->  \(PutStrLn : String -> x -> x)
-    ->  \(GetLine : (String -> x) -> x)
-    ->  \(Return : b -> x)
-    ->  m x PutStrLn GetLine (\(va : a) -> f va x PutStrLn GetLine Return)
-    )
-
-    -- putStrLn
-    (   \(str : String)
-    ->  \(x : *)
-    ->  \(PutStrLn : String -> x -> x  )
-    ->  \(GetLine  : (String -> x) -> x)
-    ->  \(Return   : U -> x)
-    ->  PutStrLn str (Return Unit)
-    )
-
-    -- getLine
-    (   \(x : *)
-    ->  \(PutStrLn : String -> x -> x  )
-    ->  \(GetLine  : (String -> x) -> x)
-    ->  \(Return   : String -> x)
-    -> GetLine Return
-    )
-)
diff --git a/dist/build/Morte/Lexer.hs b/dist/build/Morte/Lexer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/Morte/Lexer.hs
@@ -0,0 +1,420 @@
+{-# LANGUAGE CPP,MagicHash #-}
+{-# LINE 1 "src/Morte/Lexer.x" #-}
+
+{-# LANGUAGE OverloadedStrings #-}
+
+-- | Lexing logic for the Morte language
+module Morte.Lexer (
+    -- * Lexer
+    lexExpr,
+
+    -- * Types
+    Token(..),
+    Position(..),
+    LocatedToken(..)
+    ) where
+
+import Control.Monad.Trans.State.Strict (State, get)
+import Data.Bits (shiftR, (.&.))
+import Data.Char (digitToInt, ord)
+import Data.Text.Lazy (Text)
+import qualified Data.Text.Lazy as Text
+import Data.Word (Word8)
+import Filesystem.Path.CurrentOS (FilePath)
+import qualified Filesystem.Path.CurrentOS as Filesystem
+import Lens.Micro.Mtl ((.=), (+=))
+import Pipes (Producer, for, lift, yield)
+import Prelude hiding (FilePath)
+
+
+#if __GLASGOW_HASKELL__ >= 603
+#include "ghcconfig.h"
+#elif defined(__GLASGOW_HASKELL__)
+#include "config.h"
+#endif
+#if __GLASGOW_HASKELL__ >= 503
+import Data.Array
+import Data.Char (ord)
+import Data.Array.Base (unsafeAt)
+#else
+import Array
+import Char (ord)
+#endif
+#if __GLASGOW_HASKELL__ >= 503
+import GHC.Exts
+#else
+import GlaExts
+#endif
+alex_base :: AlexAddr
+alex_base = AlexA# "\xf8\xff\xff\xff\xd9\xff\xff\xff\x66\xff\xff\xff\x52\x00\x00\x00\x5b\x00\x00\x00\xdb\x00\x00\x00\x5b\x01\x00\x00\xdb\x01\x00\x00\x5b\x02\x00\x00\xdb\x02\x00\x00\x5b\x03\x00\x00\xdb\x03\x00\x00\x00\x00\x00\x00\x4c\x04\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\x00\x00\x00\x00\x2e\x05\x00\x00\x00\x00\x00\x00\x9f\x05\x00\x00\x00\x00\x00\x00\xe0\x05\x00\x00\x00\x00\x00\x00\x21\x06\x00\x00\x00\x00\x00\x00\x62\x06\x00\x00\x8a\xff\xff\xff\x83\xff\xff\xff\x00\x00\x00\x00\xa3\x06\x00\x00\xa3\x07\x00\x00\x63\x07\x00\x00\x00\x00\x00\x00\x5a\x08\x00\x00\x5a\x09\x00\x00\xbb\x07\x00\x00\x00\x00\x00\x00\xda\x09\x00\x00\x9a\x09\x00\x00\x00\x00\x00\x00\x6c\xff\xff\xff\x8d\xff\xff\xff\x8e\xff\xff\xff\x7c\xff\xff\xff\x9a\x0a\x00\x00\x5a\x0a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x50\x0b\x00\x00\x3a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x0c\x00\x00\xe1\xff\xff\xff\x00\x00\x00\x00\x6b\x0c\x00\x00\xb6\x0c\x00\x00\x01\x0d\x00\x00\x00\x00\x00\x00\x4c\x0d\x00\x00\x97\x0d\x00\x00\xe2\x0d\x00\x00\x2d\x0e\x00\x00\x78\x0e\x00\x00\x53\x00\x00\x00\xea\x0e\x00\x00\xe1\x0f\x00\x00\xd8\x10\x00\x00\xcf\x11\x00\x00\xc6\x12\x00\x00\xbd\x13\x00\x00\xb4\x14\x00\x00\xab\x15\x00\x00\xa2\x16\x00\x00\x99\x17\x00\x00\x90\x18\x00\x00\x87\x19\x00\x00\x7e\x1a\x00\x00\x75\x1b\x00\x00"#
+
+alex_table :: AlexAddr
+alex_table = AlexA# "\x00\x00\x2f\x00\x30\x00\x2f\x00\x2f\x00\x2f\x00\x31\x00\x37\x00\x2a\x00\x2b\x00\x3a\x00\x29\x00\x3a\x00\x3a\x00\x39\x00\x2f\x00\x3a\x00\x2f\x00\x2f\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x39\x00\x2f\x00\x02\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x33\x00\x35\x00\x00\x00\x00\x00\x01\x00\x2f\x00\x3d\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x00\x42\x00\x3e\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x40\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x03\x00\x1a\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x41\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x00\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x2c\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x25\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x22\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x04\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x05\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x06\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x03\x00\x00\x00\x03\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2d\x00\x04\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1d\x00\x08\x00\x12\x00\x12\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x46\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x44\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x43\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x3f\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x45\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x3b\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x38\x00\x42\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x26\x00\x05\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x19\x00\x09\x00\x10\x00\x10\x00\x10\x00\x11\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x23\x00\x06\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x17\x00\x0a\x00\x0e\x00\x0e\x00\x0e\x00\x0f\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x1f\x00\x07\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x0b\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x23\x00\x06\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x17\x00\x0a\x00\x0e\x00\x0e\x00\x0e\x00\x0f\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x26\x00\x05\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x19\x00\x09\x00\x10\x00\x10\x00\x10\x00\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+
+alex_check :: AlexAddr
+alex_check = AlexA# "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2d\x00\xa1\x00\x7e\x00\x86\x00\x7c\x00\x88\x00\xa0\x00\x80\x00\x92\x00\x09\x00\x2f\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x3e\x00\x20\x00\x96\x00\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x2d\x00\x20\x00\xbb\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x21\x00\x7c\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\x29\x00\x2a\x00\x2b\x00\xff\xff\x2d\x00\x2e\x00\x2f\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\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\x5c\x00\xff\xff\x5e\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\xce\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\x2d\x00\x2e\x00\x2f\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\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\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\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\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\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\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\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\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x70\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\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\x3a\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\x73\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\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\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00"#
+
+alex_deflt :: AlexAddr
+alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x14\x00\x16\x00\x16\x00\x18\x00\x18\x00\x1c\x00\x1c\x00\x20\x00\x20\x00\x24\x00\x24\x00\x27\x00\x27\x00\xff\xff\xff\xff\x2e\x00\x2e\x00\x4e\x00\x4e\x00\x4e\x00\x4e\x00\x49\x00\x49\x00\x49\x00\x48\x00\x48\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\x31\x00\x31\x00\xff\xff\xff\xff\x31\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\x48\x00\x49\x00\x4e\x00\x4e\x00\x4e\x00\x4e\x00\x4e\x00\x4e\x00\x4e\x00\x4e\x00\x4e\x00\x4e\x00\x49\x00\x48\x00"#
+
+alex_accept = listArray (0::Int,85) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAcc (alex_action_1),AlexAccSkip,AlexAcc (alex_action_3),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_10),AlexAcc (alex_action_10),AlexAcc (alex_action_11),AlexAcc (alex_action_11),AlexAcc (alex_action_12),AlexAcc (alex_action_12),AlexAcc (alex_action_12),AlexAcc (alex_action_12),AlexAcc (alex_action_12),AlexAcc (alex_action_12),AlexAcc (alex_action_12),AlexAcc (alex_action_12),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAcc (alex_action_14),AlexAcc (alex_action_15),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16),AlexAcc (alex_action_16)]
+{-# LINE 61 "src/Morte/Lexer.x" #-}
+
+
+toInt :: Text -> Int
+toInt = Text.foldl' (\x c -> 10 * x + digitToInt c) 0
+
+toUrl :: Text -> String
+toUrl = Text.unpack . Text.drop 1
+
+toFile :: Text -> FilePath
+toFile = Filesystem.fromText . Text.toStrict . Text.drop 1
+
+-- This was lifted almost intact from the @alex@ source code
+encode :: Char -> (Word8, [Word8])
+encode c = (fromIntegral h, map fromIntegral t)
+  where
+    (h, t) = go (ord c)
+
+    go n
+        | n <= 0x7f   = (n, [])
+        | n <= 0x7ff  = (0xc0 + (n `shiftR` 6), [0x80 + n .&. 0x3f])
+        | n <= 0xffff =
+            (   0xe0 + (n `shiftR` 12)
+            ,   [   0x80 + ((n `shiftR` 6) .&. 0x3f)
+                ,   0x80 + n .&. 0x3f
+                ]
+            )
+        | otherwise   =
+            (   0xf0 + (n `shiftR` 18)
+            ,   [   0x80 + ((n `shiftR` 12) .&. 0x3f)
+                ,   0x80 + ((n `shiftR` 6) .&. 0x3f)
+                ,   0x80 + n .&. 0x3f
+                ]
+            )
+
+-- | The cursor's location while lexing the text
+data Position = P
+    { lineNo    :: {-# UNPACK #-} !Int
+    , columnNo  :: {-# UNPACK #-} !Int
+    } deriving (Show)
+
+-- line :: Lens' Position Int
+line :: Functor f => (Int -> f Int) -> Position -> f Position
+line k (P l c) = fmap (\l' -> P l' c) (k l)
+
+-- column :: Lens' Position Int
+column :: Functor f => (Int -> f Int) -> Position -> f Position
+column k (P l c) = fmap (\c' -> P l c') (k c)
+
+{- @alex@ does not provide a `Text` wrapper, so the following code just modifies
+   the code from their @basic@ wrapper to work with `Text`
+
+   I could not get the @basic-bytestring@ wrapper to work; it does not correctly
+   recognize Unicode regular expressions.
+-}
+data AlexInput = AlexInput
+    { prevChar  :: Char
+    , currBytes :: [Word8]
+    , currInput :: Text
+    }
+
+alexGetByte :: AlexInput -> Maybe (Word8,AlexInput)
+alexGetByte (AlexInput c bytes text) = case bytes of
+    b:ytes -> Just (b, AlexInput c ytes text)
+    []     -> case Text.uncons text of
+        Nothing       -> Nothing
+        Just (t, ext) -> case encode t of
+            (b, ytes) -> Just (b, AlexInput t ytes ext)
+
+alexInputPrevChar :: AlexInput -> Char
+alexInputPrevChar = prevChar
+
+{-| Convert a text representation of an expression into a stream of tokens
+
+    `lexExpr` keeps track of position and returns the remainder of the input if
+    lexing fails.
+-}
+lexExpr :: Text -> Producer LocatedToken (State Position) (Maybe Text)
+lexExpr text = for (go (AlexInput '\n' [] text)) tag
+  where
+    tag token = do
+        pos <- lift get
+        yield (LocatedToken token pos)
+
+    go input = case alexScan input 0 of
+        AlexEOF                        -> return Nothing
+        AlexError (AlexInput _ _ text) -> return (Just text)
+        AlexSkip  input' len           -> do
+            lift (column += len)
+            go input'
+        AlexToken input' len act       -> do
+            act (Text.take (fromIntegral len) (currInput input))
+            lift (column += len)
+            go input'
+
+-- | A `Token` augmented with `Position` information
+data LocatedToken = LocatedToken
+    { token    ::                !Token
+    , position :: {-# UNPACK #-} !Position
+    } deriving (Show)
+
+-- | Token type, used to communicate between the lexer and parser
+data Token
+    = OpenParen
+    | CloseParen
+    | Colon
+    | At
+    | Star
+    | Box
+    | Arrow
+    | Lambda
+    | Pi
+    | Label Text
+    | Number Int
+    | File FilePath
+    | URL String
+    | EOF
+    deriving (Eq, Show)
+
+alex_action_1 =  \_    -> lift (do
+                                            line   += 1
+                                            column .= 0 )                      
+alex_action_3 =  \_    -> yield OpenParen             
+alex_action_4 =  \_    -> yield CloseParen            
+alex_action_5 =  \_    -> yield Colon                 
+alex_action_6 =  \_    -> yield Star                  
+alex_action_7 =  \_    -> yield At                    
+alex_action_8 =  \_    -> yield Box                   
+alex_action_9 =  \_    -> yield Arrow                 
+alex_action_10 =  \_    -> yield Pi                    
+alex_action_11 =  \_    -> yield Lambda                
+alex_action_12 =  \text -> yield (Label text)          
+alex_action_13 =  \text -> yield (Number (toInt text)) 
+alex_action_14 =  \text -> yield (URL (toUrl text))    
+alex_action_15 =  \text -> yield (URL (toUrl text))    
+alex_action_16 =  \text -> yield (File (toFile text))  
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "<command-line>" #-}
+
+
+
+
+
+
+
+# 1 "/usr/include/stdc-predef.h" 1 3 4
+
+# 17 "/usr/include/stdc-predef.h" 3 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# 47 "/usr/include/stdc-predef.h" 3 4
+
+# 59 "/usr/include/stdc-predef.h" 3 4
+
+
+
+
+
+
+
+
+{-# LINE 7 "<command-line>" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+-- -----------------------------------------------------------------------------
+-- ALEX TEMPLATE
+--
+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use
+-- it for any purpose whatsoever.
+
+-- -----------------------------------------------------------------------------
+-- INTERNALS and main scanner engine
+
+{-# LINE 21 "templates/GenericTemplate.hs" #-}
+
+
+
+
+
+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
+#if __GLASGOW_HASKELL__ > 706
+#define GTE(n,m) (tagToEnum# (n >=# m))
+#define EQ(n,m) (tagToEnum# (n ==# m))
+#else
+#define GTE(n,m) (n >=# m)
+#define EQ(n,m) (n ==# m)
+#endif
+{-# LINE 51 "templates/GenericTemplate.hs" #-}
+
+
+data AlexAddr = AlexA# Addr#
+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
+#if __GLASGOW_HASKELL__ < 503
+uncheckedShiftL# = shiftL#
+#endif
+
+{-# INLINE alexIndexInt16OffAddr #-}
+alexIndexInt16OffAddr (AlexA# arr) off =
+#ifdef WORDS_BIGENDIAN
+  narrow16Int# i
+  where
+        i    = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
+        high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
+        low  = int2Word# (ord# (indexCharOffAddr# arr off'))
+        off' = off *# 2#
+#else
+  indexInt16OffAddr# arr off
+#endif
+
+
+
+
+
+{-# INLINE alexIndexInt32OffAddr #-}
+alexIndexInt32OffAddr (AlexA# arr) off = 
+#ifdef WORDS_BIGENDIAN
+  narrow32Int# i
+  where
+   i    = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
+		     (b2 `uncheckedShiftL#` 16#) `or#`
+		     (b1 `uncheckedShiftL#` 8#) `or#` b0)
+   b3   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
+   b2   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
+   b1   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
+   b0   = int2Word# (ord# (indexCharOffAddr# arr off'))
+   off' = off *# 4#
+#else
+  indexInt32OffAddr# arr off
+#endif
+
+
+
+
+
+
+#if __GLASGOW_HASKELL__ < 503
+quickIndex arr i = arr ! i
+#else
+-- GHC >= 503, unsafeAt is available from Data.Array.Base.
+quickIndex = unsafeAt
+#endif
+
+
+
+
+-- -----------------------------------------------------------------------------
+-- Main lexing routines
+
+data AlexReturn a
+  = AlexEOF
+  | AlexError  !AlexInput
+  | AlexSkip   !AlexInput !Int
+  | AlexToken  !AlexInput !Int a
+
+-- alexScan :: AlexInput -> StartCode -> AlexReturn a
+alexScan input (I# (sc))
+  = alexScanUser undefined input (I# (sc))
+
+alexScanUser user input (I# (sc))
+  = case alex_scan_tkn user input 0# input sc AlexNone of
+	(AlexNone, input') ->
+		case alexGetByte input of
+			Nothing -> 
+
+
+
+				   AlexEOF
+			Just _ ->
+
+
+
+				   AlexError input'
+
+	(AlexLastSkip input'' len, _) ->
+
+
+
+		AlexSkip input'' len
+
+	(AlexLastAcc k input''' len, _) ->
+
+
+
+		AlexToken input''' len k
+
+
+-- Push the input through the DFA, remembering the most recent accepting
+-- state it encountered.
+
+alex_scan_tkn user orig_input len input s last_acc =
+  input `seq` -- strict in the input
+  let 
+	new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))
+  in
+  new_acc `seq`
+  case alexGetByte input of
+     Nothing -> (new_acc, input)
+     Just (c, new_input) -> 
+
+
+
+      case fromIntegral c of { (I# (ord_c)) ->
+        let
+                base   = alexIndexInt32OffAddr alex_base s
+                offset = (base +# ord_c)
+                check  = alexIndexInt16OffAddr alex_check offset
+		
+                new_s = if GTE(offset,0#) && EQ(check,ord_c)
+			  then alexIndexInt16OffAddr alex_table offset
+			  else alexIndexInt16OffAddr alex_deflt s
+	in
+        case new_s of
+	    -1# -> (new_acc, input)
+		-- on an error, we want to keep the input *before* the
+		-- character that failed, not after.
+    	    _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)
+                                                -- note that the length is increased ONLY if this is the 1st byte in a char encoding)
+			new_input new_s new_acc
+      }
+  where
+	check_accs (AlexAccNone) = last_acc
+	check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))
+	check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))
+{-# LINE 198 "templates/GenericTemplate.hs" #-}
+
+data AlexLastAcc a
+  = AlexNone
+  | AlexLastAcc a !AlexInput !Int
+  | AlexLastSkip  !AlexInput !Int
+
+instance Functor AlexLastAcc where
+    fmap f AlexNone = AlexNone
+    fmap f (AlexLastAcc x y z) = AlexLastAcc (f x) y z
+    fmap f (AlexLastSkip x y) = AlexLastSkip x y
+
+data AlexAcc a user
+  = AlexAccNone
+  | AlexAcc a
+  | AlexAccSkip
+{-# LINE 242 "templates/GenericTemplate.hs" #-}
+
+-- used by wrappers
+iUnbox (I# (i)) = i
diff --git a/exec/Main.hs b/exec/Main.hs
--- a/exec/Main.hs
+++ b/exec/Main.hs
@@ -2,6 +2,7 @@
 
 import Control.Exception (Exception, throwIO)
 import Data.Monoid (mempty)
+import Data.Traversable
 import qualified Data.Text.Lazy.IO as Text
 import Morte.Core (typeOf, pretty, normalize)
 import Morte.Parser (exprFromText)
@@ -15,20 +16,85 @@
 throws (Left  e) = throwIO e
 throws (Right r) = return r
 
+data Mode = Default | Resolve | TypeCheck | Normalize
+
+parser :: Parser Mode
+parser
+    =   subparser
+        (   command "resolve"
+            (info (helper <*> pure Resolve)
+                (   fullDesc
+                <>  header "morte resolve - Resolve Morte code"
+                <>  progDesc "Transitively replace all remote paths and URLs \
+                             \with the code that they refer to, reading the\
+                             \program from standard input and writing the \
+                             \fully resolved program to standard output."
+                )
+            )
+        <>  metavar "resolve"
+        )
+    <|> subparser
+        (   command "typecheck"
+            (   info (helper <*> pure TypeCheck)
+                (   fullDesc
+                <>  header "morte typecheck - Type-check Morte code"
+                <>  progDesc "Verify that Morte code is well-formed by \
+                             \type-checking the program, reading the program \
+                             \from standard input and writing the program's \
+                             \inferred type to standard output."
+                ) )
+        <>  metavar "typecheck" )
+    <|> subparser
+        (   command "normalize"
+            (   info (helper <*> pure Normalize)
+                (   fullDesc
+                <>  header "morte normalize - Normalize Morte code"
+                <>  progDesc "Reduce Morte code to normal form using \
+                             \β-reduction and η-reduction, reading the program \
+                             \from standard input and writing the normalized \
+                             \program to standard output."
+                ) )
+        <>  metavar "normalize"
+        )
+    <|> pure Default
+
 main :: IO ()
 main = do
-    execParser $ info (helper <*> pure ())
+    mode <- execParser $ info (helper <*> parser) 
         (   fullDesc
         <>  header "morte - A bare-bones calculus of constructions"
-        <>  progDesc "Type-check and normalize a Morte program, reading the \
-                     \program from standard input, writing the program's type \
-                     \to standard error, and writing the normalized program to \
-                     \standard output."
+        <>  progDesc "Type-check, resolve, and normalize a Morte program, \
+                     \reading the program from standard input, writing the \
+                     \program's normalized type to standard error, and writing \
+                     \the normalized program to standard output."
         )
-    inText   <- Text.getContents
-    expr     <- throws (exprFromText inText)
-    expr'    <- load expr
-    typeExpr <- throws (typeOf expr')
-    Text.hPutStrLn stderr (pretty (normalize typeExpr))
-    Text.hPutStrLn stderr mempty
-    Text.putStrLn (pretty (normalize expr'))
+    case mode of
+        Default -> do
+            inText   <- Text.getContents
+            expr     <- throws (exprFromText inText)
+            expr'    <- load expr
+            typeExpr <- throws (typeOf expr')
+            Text.hPutStrLn stderr (pretty (normalize typeExpr))
+            Text.hPutStrLn stderr mempty
+            Text.putStrLn (pretty (normalize expr'))
+        Resolve   -> do
+            inText <- Text.getContents
+            expr   <- throws (exprFromText inText)
+            expr'  <- load expr
+            Text.putStrLn (pretty expr')
+        TypeCheck -> do
+            inText <- Text.getContents
+            expr   <- throws (exprFromText inText)
+            case traverse (\_ -> Nothing) expr of
+                Nothing    -> throwIO (userError
+                    "`morte typecheck` cannot type-check a program containing \
+                    \remote references.  Use `morte resolve` to resolve all \
+                    \remote references or just use `morte` which combines \
+                    \resolution, type-checking, and normalization." )
+                Just expr' -> do
+                    typeExpr <- throws (typeOf expr')
+                    Text.putStrLn (pretty typeExpr)
+        Normalize -> do
+            inText <- Text.getContents
+            expr   <- throws (exprFromText inText)
+            Text.putStrLn (pretty (normalize expr))
diff --git a/morte.cabal b/morte.cabal
--- a/morte.cabal
+++ b/morte.cabal
@@ -1,5 +1,5 @@
 Name: morte
-Version: 1.4.2
+Version: 1.5.0
 Cabal-Version: >=1.8.0.2
 Build-Type: Simple
 Tested-With: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2
@@ -26,8 +26,7 @@
     .
     Read "Morte.Tutorial" to learn how to use this library
 Category: Compiler
-Data-Dir: benchmarks/src
-Data-Files: *.mt
+Data-Files: bench/src/*.mt test/src/*.mt
 Source-Repository head
     Type: git
     Location: https://github.com/Gabriel439/Haskell-Morte-Library
@@ -35,24 +34,24 @@
 Library
     Hs-Source-Dirs: src
     Build-Depends:
-        base               >= 4        && < 5    ,
-        array              >= 0.4.0.0  && < 0.6  ,
-        binary             >= 0.7.0.0  && < 0.8  ,
-        containers         >= 0.5.0.0  && < 0.6  ,
-        deepseq            >= 1.3.0    && < 1.5  ,
-        Earley             >= 0.10.1.0 && < 0.11 ,
-        http-client        >= 0.4.0    && < 0.5  ,
-        http-client-tls    >= 0.2.0    && < 0.3  ,
-        microlens          >= 0.2.0.0  && < 0.5  ,
-        microlens-mtl      >= 0.1.3.1  && < 0.2  ,
-        managed            >= 1.0.0    && < 1.1  ,
-        pipes              >= 4.0.0    && < 4.2  ,
-        system-filepath    >= 0.3.1    && < 0.5  ,
-        system-fileio      >= 0.2.1    && < 0.4  ,
-        text               >= 0.11.1.0 && < 1.3  ,
-        text-format                       < 0.4  ,
-        transformers       >= 0.2.0.0  && < 0.5
+        base                 >= 4        && < 5   ,
+        array                >= 0.4.0.0  && < 0.6 ,
+        binary               >= 0.7.0.0  && < 0.8 ,
+        containers           >= 0.5.0.0  && < 0.6 ,
+        deepseq              >= 1.3.0    && < 1.5 ,
+        Earley               >= 0.10.1.0 && < 0.12,
+        http-client          >= 0.4.0    && < 0.5 ,
+        http-client-tls      >= 0.2.0    && < 0.3 ,
+        microlens            >= 0.2.0.0  && < 0.5 ,
+        microlens-mtl        >= 0.1.3.1  && < 0.2 ,
+        pipes                >= 4.0.0    && < 4.2 ,
+        system-filepath      >= 0.3.1    && < 0.5 ,
+        system-fileio        >= 0.2.1    && < 0.4 ,
+        text                 >= 0.11.1.0 && < 1.3 ,
+        text-format                         < 0.4 ,
+        transformers         >= 0.2.0.0  && < 0.6
     Exposed-Modules:
+        Morte.Context,
         Morte.Core,
         Morte.Import,
         Morte.Lexer,
@@ -70,14 +69,31 @@
         optparse-applicative                < 0.13 ,
         text                 >= 0.11.1.0 && < 1.3
 
-Benchmark benchmarks
-    Type:           exitcode-stdio-1.0
-    HS-Source-Dirs: benchmarks
-    Main-Is:        Bench.hs
-    GHC-Options:    -O2 -Wall
+Benchmark bench
+    Type: exitcode-stdio-1.0
+    HS-Source-Dirs: bench
+    Main-Is: Main.hs
+    GHC-Options: -O2 -Wall
+    Build-Depends:
+        base            >= 4        && < 5  ,
+        criterion       >= 1.0.0.1  && < 1.2,
+        morte                               ,
+        system-filepath >= 0.3.1    && < 0.5,
+        text            >= 0.11.1.0 && < 1.3
 
+Test-Suite test
+    Type:           exitcode-stdio-1.0
+    HS-Source-Dirs: test
+    Main-Is:        Main.hs
+    GHC-Options:    -O2 -Wall 
     Build-Depends:
-        base      >= 4        && < 5  ,
-        criterion >= 1.0.0.1  && < 1.2,
-        morte                         ,
-        text      >= 0.11.1.0 && < 1.3
+        base             >= 4        && < 5   ,
+        mtl              >= 2.2      && < 2.3 ,
+        QuickCheck       >= 2.8.1    && < 2.9 ,
+        system-filepath  >= 0.3.1    && < 0.5 ,
+        tasty            >= 0.11     && < 0.12,
+        tasty-hunit      >= 0.9      && < 0.10,
+        tasty-quickcheck >= 0.8.4    && < 0.9 ,
+        transformers     >= 0.2.0.0  && < 0.6 ,
+        morte                                 ,
+        text             >= 0.11.1.0 && < 1.3
diff --git a/src/Morte/Context.hs b/src/Morte/Context.hs
new file mode 100644
--- /dev/null
+++ b/src/Morte/Context.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DeriveFunctor              #-}
+
+-- | All `Context`-related operations
+
+module Morte.Context (
+    -- * Context
+      Context
+    , empty
+    , insert
+    , lookup
+    , toList
+    ) where
+
+import Control.DeepSeq (NFData)
+import Data.Text.Lazy (Text)
+import Prelude hiding (lookup)
+
+{-| Bound variable names and their types
+
+    Variable names may appear more than once in the `Context`.  The `Var` @x\@n@
+    refers to the @n@th occurrence of @x@ in the `Context` (using 0-based
+    numbering).
+-}
+newtype Context a = Context { getContext :: [(Text, a)] }
+    deriving (Functor, NFData)
+
+{-| An empty context with no key-value pairs
+
+> toList empty = []
+-}
+empty :: Context a
+empty = Context []
+
+-- | Add a key-value pair to the `Context`
+insert :: Text -> a -> Context a -> Context a
+insert k v (Context kvs) = Context ((k, v) : kvs)
+{-# INLINABLE insert #-}
+
+{-| Lookup a key by name and index
+
+> lookup k 0 (insert k v0              ctx ) = Just v0
+> lookup k 1 (insert k v0 (insert k v1 ctx)) = Just v1
+-}
+lookup :: Text -> Int -> Context a -> Maybe a
+lookup k n0 (Context kvs0) = loop kvs0 n0
+  where
+    loop ((k', v):kvs) n | k /= k'   = loop kvs    n
+                         | n >  0    = loop kvs $! n - 1
+                         | n == 0    = Just v
+                         | otherwise = Nothing
+    loop  []           _             = Nothing
+{-# INLINABLE lookup #-}
+
+-- | Return all key-value associations as a list
+toList :: Context a -> [(Text, a)]
+toList = getContext
+{-# INLINABLE toList #-}
diff --git a/src/Morte/Core.hs b/src/Morte/Core.hs
--- a/src/Morte/Core.hs
+++ b/src/Morte/Core.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable     #-}
-{-# LANGUAGE DeriveFunctor      #-}
-{-# LANGUAGE DeriveTraversable  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RankNTypes         #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveFoldable             #-}
+{-# LANGUAGE DeriveFunctor              #-}
+{-# LANGUAGE DeriveTraversable          #-}
+{-# LANGUAGE OverloadedStrings          #-}
+{-# LANGUAGE RankNTypes                 #-}
 {-# OPTIONS_GHC -Wall #-}
 
 {-| This module contains the core calculus for the Morte language.  This
@@ -78,7 +79,6 @@
 import Data.Binary.Get (getWord64le)
 import Data.Binary.Put (putWord64le)
 import Data.Foldable (Foldable(..))
-import Data.Traversable (Traversable(..))
 import Data.Monoid ((<>))
 import Data.String (IsString(..))
 import Data.Text.Buildable (Buildable(..))
@@ -86,12 +86,16 @@
 import qualified Data.Text.Encoding as Text
 import qualified Data.Text.Lazy as Text
 import qualified Data.Text.Lazy.Builder as Builder
+import Data.Traversable (Traversable(..))
 import Data.Typeable (Typeable)
 import Data.Word (Word8)
 import Filesystem.Path.CurrentOS (FilePath)
 import qualified Filesystem.Path.CurrentOS as Filesystem
+import Morte.Context (Context)
 import Prelude hiding (FilePath)
 
+import qualified Morte.Context as Context
+
 {-| Label for a bound variable
 
     The `Text` field is the variable's name (i.e. \"@x@\").
@@ -189,7 +193,7 @@
 
 axiom :: Const -> Either TypeError Const
 axiom Star = return Box
-axiom Box  = Left (TypeError [] (Const Box) (Untyped Box))
+axiom Box  = Left (TypeError Context.empty (Const Box) (Untyped Box))
 
 rule :: Const -> Const -> Either TypeError Const
 rule Star Box  = return Box
@@ -270,16 +274,6 @@
         App f a     -> App (f >>= k) (a >>= k)
         Embed r     -> k r
 
-lookupN :: Eq a => a -> [(a, b)] -> Int -> Maybe b
-lookupN a ((a', b'):abs') n | a /= a'   = lookupN a abs'    n
-                            | n >  0    = lookupN a abs' $! n - 1
-                            | n == 0    = Just b'
-                            | otherwise = Nothing
-lookupN _  []             _             = Nothing
-
-lookupCtx :: Var -> Context -> Maybe (Expr X)
-lookupCtx (V x n) ctx = lookupN x ctx n
-
 match :: Text -> Int -> Text -> Int -> [(Text, Text)] -> Bool
 match xL nL xR nR  []                                      = xL == xR && nL == nR
 match xL 0  xR 0  ((xL', xR'):_ ) | xL == xL' && xR == xR' = True
@@ -398,14 +392,6 @@
                 <>  (if parenApp then ")" else "")
             Embed p    -> build p
 
-{-| Bound variable names and their types
-
-    Variable names may appear more than once in the `Context`.  The `Var` @x\@n@
-    refers to the @n@th occurrence of @x@ in the `Context` (using 0-based
-    numbering).
--}
-type Context = [(Text, Expr X)]
-
 -- | The specific type error
 data TypeMessage
     = UnboundVariable
@@ -449,7 +435,7 @@
 
 -- | A structured type error that includes context
 data TypeError = TypeError
-    { context     :: Context
+    { context     :: Context (Expr X)
     , current     :: Expr X
     , typeMessage :: TypeMessage
     } deriving (Typeable)
@@ -480,6 +466,7 @@
             .   Text.unlines
             .   map (Builder.toLazyText . buildKV)
             .   reverse
+            .   Context.toList
 
 {-| Substitute all occurrences of a variable with an expression
 
@@ -531,14 +518,14 @@
     is not necessary for just type-checking.  If you actually care about the
     returned type then you may want to `normalize` it afterwards.
 -}
-typeWith :: Context -> Expr X -> Either TypeError (Expr X)
+typeWith :: Context (Expr X) -> Expr X -> Either TypeError (Expr X)
 typeWith ctx e = case e of
     Const c     -> fmap Const (axiom c)
-    Var x       -> case lookupCtx x ctx of
+    Var (V x n) -> case Context.lookup x n ctx of
         Nothing -> Left (TypeError ctx e UnboundVariable)
         Just a  -> return a
     Lam x _A b  -> do
-        let ctx' = [ (x', shift 1 x _A') | (x', _A') <- (x, _A):ctx ]
+        let ctx' = fmap (shift 1 x) (Context.insert x _A ctx)
         _B <- typeWith ctx' b
         let p = Pi x _A _B
         _t <- typeWith ctx p
@@ -548,7 +535,7 @@
         s  <- case eS of
             Const s -> return s
             _       -> Left (TypeError ctx e (InvalidInputType _A))
-        let ctx' = [ (x', shift 1 x _A') | (x', _A') <- (x, _A):ctx ]
+        let ctx' = fmap (shift 1 x) (Context.insert x _A ctx)
         eT <- fmap whnf (typeWith ctx' _B)
         t  <- case eT of
             Const t -> return t
@@ -576,7 +563,7 @@
     will fail.
 -}
 typeOf :: Expr X -> Either TypeError (Expr X)
-typeOf = typeWith []
+typeOf = typeWith Context.empty
 
 -- | Reduce an expression to weak-head normal form
 whnf :: Expr a -> Expr a
diff --git a/src/Morte/Import.hs b/src/Morte/Import.hs
--- a/src/Morte/Import.hs
+++ b/src/Morte/Import.hs
@@ -74,8 +74,6 @@
 import Control.Exception (Exception, IOException, catch, onException, throwIO)
 import Control.Monad (join)
 import Control.Monad.IO.Class (MonadIO(liftIO))
-import Control.Monad.Managed (Managed, managed, with)
-import Control.Monad.Trans.Class (lift)
 import Control.Monad.Trans.State.Strict (StateT, evalStateT, get, put)
 import Data.Map.Strict (Map)
 import qualified Data.Map.Strict as Map
@@ -179,7 +177,7 @@
 manager :: Lens' Status (Maybe Manager)
 manager k s = fmap (\x -> s { _manager = x }) (k (_manager s))
 
-needManager :: StateT Status Managed Manager
+needManager :: StateT Status IO Manager
 needManager = do
     x <- zoom manager get
     case x of
@@ -187,12 +185,12 @@
         Nothing -> do
             let settings = HTTP.tlsManagerSettings
                     { HTTP.managerResponseTimeout = Just 1000000 }  -- 1 second
-            m <- lift (managed (HTTP.withManager settings))
+            m <- liftIO (HTTP.newManager settings)
             zoom manager (put (Just m))
             return m
 
 -- | Load a `Path` as a \"dynamic\" expression (without resolving any imports)
-loadDynamic :: Path -> StateT Status Managed (Expr Path)
+loadDynamic :: Path -> StateT Status IO (Expr Path)
 loadDynamic p = do
     paths <- zoom stack get
     txt <- case p of
@@ -247,7 +245,7 @@
         Right expr -> return expr 
 
 -- | Load a `Path` as a \"static\" expression (with all imports resolved)
-loadStatic :: Path -> StateT Status Managed (Expr X)
+loadStatic :: Path -> StateT Status IO (Expr X)
 loadStatic path = do
     paths <- zoom stack get
 
@@ -267,31 +265,42 @@
 
     let paths' = path:paths
     zoom stack (put paths')
-    expr <- if path `elem` paths
+    (expr, cached) <- if path `elem` paths
         then liftIO (throwIO (Imported paths (Cycle path)))
         else do
             m <- zoom cache get
             case Map.lookup path m of
-                Just expr -> return expr
+                Just expr -> return (expr, True)
                 Nothing   -> do
-                    expr' <- loadDynamic path
-                    case traverse (\_ -> Nothing) expr' of
+                    expr'  <- loadDynamic path
+                    expr'' <- case traverse (\_ -> Nothing) expr' of
                         -- No imports left
                         Just expr -> do
                             zoom cache (put $! Map.insert path expr m)
                             return expr
                         -- Some imports left, so recurse
                         Nothing   -> fmap join (traverse loadStatic expr')
-    case typeOf expr of
-        Left  err -> liftIO (throwIO (Imported paths' err))
-        Right _   -> return ()
+                    return (expr'', False)
+
+    -- Type-check expressions here for two separate reasons:
+    --
+    --  * to verify that they are closed
+    --  * to catch type errors as early in the import process as possible
+    --
+    -- There is no need to check expressions that have been cached, since they
+    -- have already been checked
+    if cached
+        then return ()
+        else case typeOf expr of
+            Left  err -> liftIO (throwIO (Imported paths' err))
+            Right _   -> return ()
+
     zoom stack (put paths)
 
     return expr
 
 -- | Resolve all imports within an expression
 load :: Expr Path -> IO (Expr X)
-load expr =
-    with (evalStateT (fmap join (traverse loadStatic expr)) status) return
+load expr = evalStateT (fmap join (traverse loadStatic expr)) status
   where
     status = Status [] Map.empty Nothing
diff --git a/src/Morte/Lexer.x b/src/Morte/Lexer.x
--- a/src/Morte/Lexer.x
+++ b/src/Morte/Lexer.x
@@ -152,6 +152,7 @@
             lift (column += len)
             go input'
 
+-- | A `Token` augmented with `Position` information
 data LocatedToken = LocatedToken
     { token    ::                !Token
     , position :: {-# UNPACK #-} !Position
diff --git a/src/Morte/Parser.hs b/src/Morte/Parser.hs
--- a/src/Morte/Parser.hs
+++ b/src/Morte/Parser.hs
@@ -2,6 +2,8 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecursiveDo       #-}
 
+-- | Parsing logic for the Morte language
+
 module Morte.Parser (
     -- * Parser
     exprFromText,
diff --git a/src/Morte/Tutorial.hs b/src/Morte/Tutorial.hs
--- a/src/Morte/Tutorial.hs
+++ b/src/Morte/Tutorial.hs
@@ -93,7 +93,7 @@
 > $ morte
 > \(a : *) -> \(x : a) -> x <Enter>
 > <Ctrl-D>
-> ∀(a : *) → a → a
+> ∀(a : *) → ∀(x : a) → a
 > 
 > λ(a : *) → λ(x : a) → x
 > $
@@ -108,7 +108,7 @@
 > id :: a -> a
 >
 > -- Morte
-> ∀(a : *) → a → a
+> ∀(a : *) → ∀(x : a) → a
 
     The first thing you'll notice is that Morte explicitly quantifies all types.
     In Haskell, you can do this, too, using the @ExplicitForAll@ extension:
@@ -165,7 +165,7 @@
     Then we'll type-check and optimize this program:
 
 > $ morte < id.mt
-> ∀(String : *) → String → String
+> ∀(String : *) → ∀(x : String) → String
 > 
 > λ(String : *) → λ(x : String) → x
 
@@ -518,7 +518,7 @@
    If you type-check and optimize this, you get:
 
 > $ morte < bool.mt
-> ∀(Int : *) → Int → Int → Int
+> ∀(Int : *) → ∀(Zero : Int) → ∀(One : Int) → Int
 > 
 > λ(Int : *) → λ(Zero : Int) → λ(One : Int) → One
 
@@ -616,7 +616,7 @@
     If you compile and type-check that you get:
 
 > $ morte < pair.mt
-> ∀(a : *) → a → a → a
+> ∀(a : *) → ∀(x : a) → ∀(y : a) → a
 > 
 > λ(a : *) → λ(x : a) → λ(y : a) → y
 
@@ -1259,8 +1259,8 @@
     over the list just once, applying @\'f\'@ and @\'g\'@ to every value:
 
 > $ morte < mapcomp1.mt
-> ∀(a : *) → ∀(b : *) → ∀(c : *) → (b → c) → (a → b) → (∀(x : *) → (a → x → x) →
->  x → x) → ∀(x : *) → (c → x → x) → x → x
+> ∀(a : *) → ∀(b : *) → ∀(c : *) → ∀(f : b → c) → ∀(g : a → b) → (∀(x : *) → (a 
+> → x → x) → x → x) → ∀(x : *) → (c → x → x) → x → x
 > 
 > λ(a : *) → λ(b : *) → λ(c : *) → λ(f : b → c) → λ(g : a → b) → λ(l : ∀(x : *) 
 > → (a → x → x) → x → x) → λ(x : *) → λ(Cons : c → x → x) → l x (λ(va : a) → Con
@@ -1798,8 +1798,8 @@
 input to standard output:
 
 > $ morte < recursive.mt
-> ∀(String : *) → ∀(U : *) → U → ∀(x : *) → (String → x → x) → ((String → x
-> ) → x) → (U → x) → x
+> ∀(String : *) → ∀(U : *) → ∀(Unit : U) → ∀(x : *) → (String → x → x) → ((Strin
+> g → x) → x) → (U → x) → x
 > 
 > λ(String : *) → λ(U : *) → λ(Unit : U) → λ(x : *) → λ(PutStrLn : String → x → 
 > x) → λ(GetLine : (String → x) → x) → λ(Return : U → x) → GetLine (λ(va : Strin
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,204 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Main (
+    main
+  ) where
+
+import Control.Exception (throwIO)
+import ClosedWellTyped (ClosedWellTyped(..))
+import Data.Text.Lazy (Text)
+import Filesystem.Path (FilePath)
+import Morte.Core (Expr, X)
+import Paths_morte (getDataFileName)
+import Prelude hiding (FilePath)
+import Test.Tasty (TestTree)
+
+import qualified Data.Text.Lazy.IO         as Text
+import qualified Filesystem.Path.CurrentOS as Filesystem
+import qualified Morte.Core                as Morte
+import qualified Morte.Import              as Morte
+import qualified Morte.Parser              as Morte
+import qualified Test.Tasty                as Tasty
+import qualified Test.Tasty.QuickCheck     as QuickCheck
+import qualified Test.Tasty.HUnit          as HUnit
+
+main :: IO ()
+main = Tasty.defaultMain tests
+
+tests :: TestTree
+tests =
+    Tasty.testGroup "Tests"
+        [ Tasty.testGroup "Properties"
+            [ QuickCheck.testProperty "Normalization is idempotent"
+                normalizationIsIdempotent 
+            , QuickCheck.testProperty "Normalization preserves type safety"
+                normalizationPreservesTypeSafety
+            ]
+        , Tasty.testGroup "Unit tests"
+            [ HUnit.testCase "Tutorial - Identity"           example0
+            , HUnit.testCase "Tutorial - id.mt"              example1
+            , HUnit.testCase "Tutorial - id2.mt"             example2
+            , HUnit.testCase "Tutorial - bool.mt"            example3
+            , HUnit.testCase "Tutorial - pair.mt"            example4
+            , HUnit.testCase "Tutorial - all.mt"             example5
+            , HUnit.testCase "Tutorial - mapid1.mt"          example6
+            , HUnit.testCase "Tutorial - mapid2.mt"          example7
+            , HUnit.testCase "Tutorial - mapcomp1.mt"        example8
+            , HUnit.testCase "Tutorial - mapcomp2.mt"        example9
+            , HUnit.testCase "Tutorial - corecursive.mt - A" example10
+            , HUnit.testCase "Tutorial - corecursive.mt - B" example11
+            , HUnit.testCase "Tutorial - corecursive.mt - C" example12
+            , HUnit.testCase "Tutorial - corecursive.mt - D" example13
+            , HUnit.testCase "Tutorial - recursive.mt"       example14
+            , HUnit.testCase "Tutorial - corecursive.mt"     example15
+            ]
+        ]
+
+typeChecks :: Expr X -> Bool
+typeChecks expr = case Morte.typeOf expr of
+    Right _ -> True
+    Left  _ -> False
+
+-- Carefully note that `ClosedWellTyped` generates well-typed expressions, so
+-- this is really testing that `typeChecks expr ==> typeChecks (normalize expr)`
+normalizationPreservesTypeSafety :: ClosedWellTyped -> Bool
+normalizationPreservesTypeSafety (ClosedWellTyped expr) =
+    typeChecks (Morte.normalize expr)
+
+-- Carefully note that `(==)` also normalizes both sides before checking for
+-- α-equality, so this is really testing that `normalize (normalize expr)` and
+-- `normalize expr` are α-equivalent.
+normalizationIsIdempotent :: ClosedWellTyped -> Bool
+normalizationIsIdempotent (ClosedWellTyped expr) = Morte.normalize expr == expr
+
+example
+    :: FilePath
+    -> Text
+    -> Text
+    -> IO ()
+example path stderr stdout = do
+    str   <- getDataFileName (Filesystem.encodeString path)
+    stdin <- Text.readFile str
+    case Morte.exprFromText stdin of
+        Left  e    -> throwIO e
+        Right expr -> do
+            expr' <- Morte.load expr
+            case Morte.typeOf expr' of
+                Left  e        -> throwIO e
+                Right typeExpr -> do
+                    let stderr' = Morte.pretty (Morte.normalize typeExpr)
+                    let stdout' = Morte.pretty (Morte.normalize expr')
+                    HUnit.assertEqual "" stderr stderr'
+                    HUnit.assertEqual "" stdout stdout'
+
+example0 :: IO ()
+example0 =
+    example
+        "test/src/example0.mt"
+        "∀(a : *) → ∀(x : a) → a"
+        "λ(a : *) → λ(x : a) → x"
+
+example1 :: IO ()
+example1 =
+    example
+        "test/src/example1.mt"
+        "∀(String : *) → ∀(x : String) → String"
+        "λ(String : *) → λ(x : String) → x"
+
+example2 :: IO ()
+example2 =
+    example
+        "test/src/example2.mt"
+        "∀(a : *) → a → a"
+        "λ(a : *) → λ(x : a) → x"
+
+example3 :: IO ()
+example3 =
+    example
+        "test/src/example3.mt"
+        "∀(Int : *) → ∀(Zero : Int) → ∀(One : Int) → Int"
+        "λ(Int : *) → λ(Zero : Int) → λ(One : Int) → One"
+
+example4 :: IO ()
+example4 =
+    example
+        "test/src/example4.mt"
+        "∀(a : *) → ∀(x : a) → ∀(y : a) → a"
+        "λ(a : *) → λ(x : a) → λ(y : a) → y"
+
+example5 :: IO ()
+example5 =
+    example
+        "test/src/example5.mt"
+        "∀(r : *) → r → r → r"
+        "λ(r : *) → λ(x : r) → λ(_ : r) → x"
+
+example6 :: IO ()
+example6 =
+    example
+        "test/src/example6.mt"
+        "∀(a : *) → (∀(x : *) → (a → x → x) → x → x) → ∀(x : *) → (a → x → x) → x → x"
+        "λ(a : *) → λ(l : ∀(x : *) → (a → x → x) → x → x) → l"
+
+example7 :: IO ()
+example7 =
+    example
+        "test/src/example7.mt"
+        "∀(a : *) → (∀(x : *) → (a → x → x) → x → x) → ∀(x : *) → (a → x → x) → x → x"
+        "λ(a : *) → λ(va : ∀(x : *) → (a → x → x) → x → x) → va"
+
+example8 :: IO ()
+example8 =
+    example
+        "test/src/example8.mt"
+        "∀(a : *) → ∀(b : *) → ∀(c : *) → ∀(f : b → c) → ∀(g : a → b) → (∀(x : *) → (a → x → x) → x → x) → ∀(x : *) → (c → x → x) → x → x"
+        "λ(a : *) → λ(b : *) → λ(c : *) → λ(f : b → c) → λ(g : a → b) → λ(l : ∀(x : *) → (a → x → x) → x → x) → λ(x : *) → λ(Cons : c → x → x) → l x (λ(va : a) → Cons (f (g va)))"
+
+example9 :: IO ()
+example9 =
+    example
+        "test/src/example9.mt"
+        "∀(a : *) → ∀(b : *) → ∀(c : *) → ∀(f : b → c) → ∀(g : a → b) → (∀(x : *) → (a → x → x) → x → x) → ∀(x : *) → (c → x → x) → x → x"
+        "λ(a : *) → λ(b : *) → λ(c : *) → λ(f : b → c) → λ(g : a → b) → λ(va : ∀(x : *) → (a → x → x) → x → x) → λ(x : *) → λ(Cons : c → x → x) → va x (λ(va : a) → Cons (f (g va)))"
+
+example10 :: IO ()
+example10 =
+    example
+        "test/src/example10.mt"
+        "∀(a : *) → (∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x) → ∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x"
+        "λ(a : *) → λ(st : ∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x) → st"
+
+example11 :: IO ()
+example11 =
+    example
+        "test/src/example11.mt"
+        "∀(a : *) → (∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x) → ∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x"
+        "λ(a : *) → λ(va : ∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x) → va"
+
+example12 :: IO ()
+example12 =
+    example
+        "test/src/example12.mt"
+        "∀(a : *) → ∀(b : *) → ∀(c : *) → (b → c) → (a → b) → (∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x) → ∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (c → s → x) → x) → x) → x"
+        "λ(a : *) → λ(b : *) → λ(c : *) → λ(f : b → c) → λ(g : a → b) → λ(st : ∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x) → λ(x : *) → λ(S : ∀(s : *) → s → (s → ∀(x : *) → (c → s → x) → x) → x) → st x (λ(s : *) → λ(seed : s) → λ(step : s → ∀(x : *) → (a → s → x) → x) → S s seed (λ(seed : s) → λ(x : *) → λ(Pair : c → s → x) → step seed x (λ(va : a) → Pair (f (g va)))))"
+
+example13 :: IO ()
+example13 =
+    example
+        "test/src/example13.mt"
+        "∀(a : *) → ∀(b : *) → ∀(c : *) → (b → c) → (a → b) → (∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x) → ∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (c → s → x) → x) → x) → x"
+        "λ(a : *) → λ(b : *) → λ(c : *) → λ(f : b → c) → λ(g : a → b) → λ(va : ∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (a → s → x) → x) → x) → x) → λ(x : *) → λ(S : ∀(s : *) → s → (s → ∀(x : *) → (c → s → x) → x) → x) → va x (λ(s : *) → λ(seed : s) → λ(step : s → ∀(x : *) → (a → s → x) → x) → S s seed (λ(seed : s) → λ(x : *) → λ(Pair : c → s → x) → step seed x (λ(va : a) → Pair (f (g va)))))"
+
+example14 :: IO ()
+example14 =
+    example
+        "test/src/example14.mt"
+        "∀(String : *) → ∀(U : *) → ∀(Unit : U) → ∀(x : *) → (String → x → x) → ((String → x) → x) → (U → x) → x"
+        "λ(String : *) → λ(U : *) → λ(Unit : U) → λ(x : *) → λ(PutStrLn : String → x → x) → λ(GetLine : (String → x) → x) → λ(Return : U → x) → GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (GetLine (λ(va : String) → PutStrLn va (Return Unit))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))"
+
+example15 :: IO ()
+example15 =
+    example
+        "test/src/example15.mt"
+        "∀(String : *) → ∀(r : *) → ∀(x : *) → (∀(s : *) → s → (s → ∀(x : *) → (String → s → x) → ((String → s) → x) → (r → x) → x) → x) → x"
+        "λ(String : *) → λ(r : *) → λ(x : *) → λ(k : ∀(s : *) → s → (s → ∀(x : *) → (String → s → x) → ((String → s) → x) → (r → x) → x) → x) → k (∀(x : *) → (String → x) → x → x) (λ(x : *) → λ(Just : String → x) → λ(Nothing : x) → Nothing) (λ(m : ∀(x : *) → (String → x) → x → x) → m (∀(x : *) → (String → (∀(x : *) → (String → x) → x → x) → x) → ((String → ∀(x : *) → (String → x) → x → x) → x) → (r → x) → x) (λ(str : String) → λ(x : *) → λ(PutStrLn : String → (∀(x : *) → (String → x) → x → x) → x) → λ(GetLine : (String → ∀(x : *) → (String → x) → x → x) → x) → λ(Return : r → x) → PutStrLn str (λ(x : *) → λ(Just : String → x) → λ(Nothing : x) → Nothing)) (λ(x : *) → λ(PutStrLn : String → (∀(x : *) → (String → x) → x → x) → x) → λ(GetLine : (String → ∀(x : *) → (String → x) → x → x) → x) → λ(Return : r → x) → GetLine (λ(va : String) → λ(x : *) → λ(Just : String → x) → λ(Nothing : x) → Just va)))"
diff --git a/test/src/example0.mt b/test/src/example0.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example0.mt
@@ -0,0 +1,1 @@
+\(a : *) -> \(x : a) -> x
diff --git a/test/src/example1.mt b/test/src/example1.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example1.mt
@@ -0,0 +1,7 @@
+-- id.mt
+
+-- Morte accepts comments
+
+-- Also, whitespace is not significant
+\(String : *) ->
+    (\(a : *) -> \(x : a) -> x) String
diff --git a/test/src/example10.mt b/test/src/example10.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example10.mt
@@ -0,0 +1,177 @@
+-- corecursive.mt
+
+-- first :: (a -> b) -> (a, c) -> (b, c)
+-- first f (va, vb) = (f va, vb) 
+-- 
+-- data Stream a = Cons (a, Stream a)
+-- 
+-- map :: (a -> b) -> Stream a -> Stream b
+-- map f (Cons (va, s)) = Cons (first f (va, map f s))
+-- 
+-- -- exampleA = exampleB
+-- 
+-- exampleA :: Stream a -> Stream a
+-- exampleA = map id
+-- 
+-- exampleB :: Stream a -> Stream a
+-- exampleB = id
+-- 
+-- -- exampleC = exampleD
+-- 
+-- exampleC :: (b -> c) -> (a -> b) -> Stream a -> Stream c
+-- exampleC f g = map (f . g)
+-- 
+-- exampleD :: (b -> c) -> (a -> b) -> Stream a -> Stream c
+-- exampleD f g = map f . map g
+
+(   \(id : forall (a : *) -> a -> a)
+->  \(  (.)
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (b -> c)
+    ->  (a -> b)
+    ->  (a -> c)
+    )
+->  \(Pair : * -> * -> *)
+->  \(P : forall (a : *) -> forall (b : *) -> a -> b -> Pair a b)
+->  \(  first
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (a -> b)
+    ->  Pair a c
+    ->  Pair b c
+    )
+
+->  (   \(Stream : * -> *)
+    ->  \(  map
+        :   forall (a : *)
+        ->  forall (b : *)
+        ->  (a -> b)
+        ->  Stream a
+        ->  Stream b
+        )
+
+        -- exampleA = exampleB
+    ->  (   \(exampleA : forall (a : *) -> Stream a -> Stream a)
+        ->  \(exampleB : forall (a : *) -> Stream a -> Stream a)
+
+        -- exampleC = exampleD
+        ->  \(  exampleC
+            :   forall (a : *)
+            ->  forall (b : *)
+            ->  forall (c : *)
+            ->  (b -> c)
+            ->  (a -> b)
+            ->  Stream a
+            ->  Stream c
+            )
+
+        ->  \(  exampleD
+            :   forall (a : *)
+            ->  forall (b : *)
+            ->  forall (c : *)
+            ->  (b -> c)
+            ->  (a -> b)
+            ->  Stream a
+            ->  Stream c
+            )
+
+        -- Uncomment the example you want to test
+        ->  exampleA
+--      ->  exampleB
+--      ->  exampleC
+--      ->  exampleD
+        )
+
+        -- exampleA
+        (\(a : *) -> map a a (id a))
+  
+        -- exampleB
+        (\(a : *) -> id (Stream a))
+
+        -- exampleC
+        (   \(a : *)
+        ->  \(b : *)
+        ->  \(c : *)
+        ->  \(f : b -> c)
+        ->  \(g : a -> b)
+        ->  map a c ((.) a b c f g)
+        )
+
+        --  exampleD
+        (   \(a : *)
+        ->  \(b : *)
+        ->  \(c : *)
+        ->  \(f : b -> c)
+        ->  \(g : a -> b)
+        ->  (.) (Stream a) (Stream b) (Stream c) (map b c f) (map a b g)
+        )
+    )
+
+    -- Stream
+    (   \(a : *)
+    ->  forall (x : *)
+    ->  (forall (s : *) -> s -> (s -> Pair a s) -> x)
+    ->  x
+    )
+
+    -- map
+    (   \(a : *)
+    ->  \(b : *)
+    ->  \(f : a -> b)
+    ->  \(  st
+        :   forall (x : *) -> (forall (s : *) -> s -> (s -> Pair a s) -> x) -> x
+        )
+    ->  \(x : *)
+    ->  \(S : forall (s : *) -> s -> (s -> Pair b s) -> x)
+    ->  st
+        x
+        (   \(s : *)
+        ->  \(seed : s)
+        ->  \(step : s -> Pair a s)
+        ->  S
+            s
+            seed
+            (\(seed : s) -> first a b s f (step seed))
+        )
+    )
+)
+
+-- id
+(\(a : *) -> \(va : a) -> va)
+
+-- (.)
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : b -> c)
+->  \(g : a -> b)
+->  \(va : a)
+->  f (g va)
+)
+
+-- Pair
+(\(a : *) -> \(b : *) -> forall (x : *) -> (a -> b -> x) -> x)
+
+-- P
+(   \(a : *)
+->  \(b : *)
+->  \(va : a)
+->  \(vb : b)
+->  \(x : *)
+->  \(P : a -> b -> x)
+->  P va vb
+)
+
+-- first
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : a -> b)
+->  \(p : forall (x : *) -> (a -> c -> x) -> x)
+->  \(x : *)
+->  \(Pair : b -> c -> x)
+->  p x (\(va : a) -> \(vc : c) -> Pair (f va) vc)
+)
diff --git a/test/src/example11.mt b/test/src/example11.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example11.mt
@@ -0,0 +1,177 @@
+-- corecursive.mt
+
+-- first :: (a -> b) -> (a, c) -> (b, c)
+-- first f (va, vb) = (f va, vb) 
+-- 
+-- data Stream a = Cons (a, Stream a)
+-- 
+-- map :: (a -> b) -> Stream a -> Stream b
+-- map f (Cons (va, s)) = Cons (first f (va, map f s))
+-- 
+-- -- exampleA = exampleB
+-- 
+-- exampleA :: Stream a -> Stream a
+-- exampleA = map id
+-- 
+-- exampleB :: Stream a -> Stream a
+-- exampleB = id
+-- 
+-- -- exampleC = exampleD
+-- 
+-- exampleC :: (b -> c) -> (a -> b) -> Stream a -> Stream c
+-- exampleC f g = map (f . g)
+-- 
+-- exampleD :: (b -> c) -> (a -> b) -> Stream a -> Stream c
+-- exampleD f g = map f . map g
+
+(   \(id : forall (a : *) -> a -> a)
+->  \(  (.)
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (b -> c)
+    ->  (a -> b)
+    ->  (a -> c)
+    )
+->  \(Pair : * -> * -> *)
+->  \(P : forall (a : *) -> forall (b : *) -> a -> b -> Pair a b)
+->  \(  first
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (a -> b)
+    ->  Pair a c
+    ->  Pair b c
+    )
+
+->  (   \(Stream : * -> *)
+    ->  \(  map
+        :   forall (a : *)
+        ->  forall (b : *)
+        ->  (a -> b)
+        ->  Stream a
+        ->  Stream b
+        )
+
+        -- exampleA = exampleB
+    ->  (   \(exampleA : forall (a : *) -> Stream a -> Stream a)
+        ->  \(exampleB : forall (a : *) -> Stream a -> Stream a)
+
+        -- exampleC = exampleD
+        ->  \(  exampleC
+            :   forall (a : *)
+            ->  forall (b : *)
+            ->  forall (c : *)
+            ->  (b -> c)
+            ->  (a -> b)
+            ->  Stream a
+            ->  Stream c
+            )
+
+        ->  \(  exampleD
+            :   forall (a : *)
+            ->  forall (b : *)
+            ->  forall (c : *)
+            ->  (b -> c)
+            ->  (a -> b)
+            ->  Stream a
+            ->  Stream c
+            )
+
+        -- Uncomment the example you want to test
+--      ->  exampleA
+        ->  exampleB
+--      ->  exampleC
+--      ->  exampleD
+        )
+
+        -- exampleA
+        (\(a : *) -> map a a (id a))
+  
+        -- exampleB
+        (\(a : *) -> id (Stream a))
+
+        -- exampleC
+        (   \(a : *)
+        ->  \(b : *)
+        ->  \(c : *)
+        ->  \(f : b -> c)
+        ->  \(g : a -> b)
+        ->  map a c ((.) a b c f g)
+        )
+
+        --  exampleD
+        (   \(a : *)
+        ->  \(b : *)
+        ->  \(c : *)
+        ->  \(f : b -> c)
+        ->  \(g : a -> b)
+        ->  (.) (Stream a) (Stream b) (Stream c) (map b c f) (map a b g)
+        )
+    )
+
+    -- Stream
+    (   \(a : *)
+    ->  forall (x : *)
+    ->  (forall (s : *) -> s -> (s -> Pair a s) -> x)
+    ->  x
+    )
+
+    -- map
+    (   \(a : *)
+    ->  \(b : *)
+    ->  \(f : a -> b)
+    ->  \(  st
+        :   forall (x : *) -> (forall (s : *) -> s -> (s -> Pair a s) -> x) -> x
+        )
+    ->  \(x : *)
+    ->  \(S : forall (s : *) -> s -> (s -> Pair b s) -> x)
+    ->  st
+        x
+        (   \(s : *)
+        ->  \(seed : s)
+        ->  \(step : s -> Pair a s)
+        ->  S
+            s
+            seed
+            (\(seed : s) -> first a b s f (step seed))
+        )
+    )
+)
+
+-- id
+(\(a : *) -> \(va : a) -> va)
+
+-- (.)
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : b -> c)
+->  \(g : a -> b)
+->  \(va : a)
+->  f (g va)
+)
+
+-- Pair
+(\(a : *) -> \(b : *) -> forall (x : *) -> (a -> b -> x) -> x)
+
+-- P
+(   \(a : *)
+->  \(b : *)
+->  \(va : a)
+->  \(vb : b)
+->  \(x : *)
+->  \(P : a -> b -> x)
+->  P va vb
+)
+
+-- first
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : a -> b)
+->  \(p : forall (x : *) -> (a -> c -> x) -> x)
+->  \(x : *)
+->  \(Pair : b -> c -> x)
+->  p x (\(va : a) -> \(vc : c) -> Pair (f va) vc)
+)
diff --git a/test/src/example12.mt b/test/src/example12.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example12.mt
@@ -0,0 +1,177 @@
+-- corecursive.mt
+
+-- first :: (a -> b) -> (a, c) -> (b, c)
+-- first f (va, vb) = (f va, vb) 
+-- 
+-- data Stream a = Cons (a, Stream a)
+-- 
+-- map :: (a -> b) -> Stream a -> Stream b
+-- map f (Cons (va, s)) = Cons (first f (va, map f s))
+-- 
+-- -- exampleA = exampleB
+-- 
+-- exampleA :: Stream a -> Stream a
+-- exampleA = map id
+-- 
+-- exampleB :: Stream a -> Stream a
+-- exampleB = id
+-- 
+-- -- exampleC = exampleD
+-- 
+-- exampleC :: (b -> c) -> (a -> b) -> Stream a -> Stream c
+-- exampleC f g = map (f . g)
+-- 
+-- exampleD :: (b -> c) -> (a -> b) -> Stream a -> Stream c
+-- exampleD f g = map f . map g
+
+(   \(id : forall (a : *) -> a -> a)
+->  \(  (.)
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (b -> c)
+    ->  (a -> b)
+    ->  (a -> c)
+    )
+->  \(Pair : * -> * -> *)
+->  \(P : forall (a : *) -> forall (b : *) -> a -> b -> Pair a b)
+->  \(  first
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (a -> b)
+    ->  Pair a c
+    ->  Pair b c
+    )
+
+->  (   \(Stream : * -> *)
+    ->  \(  map
+        :   forall (a : *)
+        ->  forall (b : *)
+        ->  (a -> b)
+        ->  Stream a
+        ->  Stream b
+        )
+
+        -- exampleA = exampleB
+    ->  (   \(exampleA : forall (a : *) -> Stream a -> Stream a)
+        ->  \(exampleB : forall (a : *) -> Stream a -> Stream a)
+
+        -- exampleC = exampleD
+        ->  \(  exampleC
+            :   forall (a : *)
+            ->  forall (b : *)
+            ->  forall (c : *)
+            ->  (b -> c)
+            ->  (a -> b)
+            ->  Stream a
+            ->  Stream c
+            )
+
+        ->  \(  exampleD
+            :   forall (a : *)
+            ->  forall (b : *)
+            ->  forall (c : *)
+            ->  (b -> c)
+            ->  (a -> b)
+            ->  Stream a
+            ->  Stream c
+            )
+
+        -- Uncomment the example you want to test
+--      ->  exampleA
+--      ->  exampleB
+        ->  exampleC
+--      ->  exampleD
+        )
+
+        -- exampleA
+        (\(a : *) -> map a a (id a))
+  
+        -- exampleB
+        (\(a : *) -> id (Stream a))
+
+        -- exampleC
+        (   \(a : *)
+        ->  \(b : *)
+        ->  \(c : *)
+        ->  \(f : b -> c)
+        ->  \(g : a -> b)
+        ->  map a c ((.) a b c f g)
+        )
+
+        --  exampleD
+        (   \(a : *)
+        ->  \(b : *)
+        ->  \(c : *)
+        ->  \(f : b -> c)
+        ->  \(g : a -> b)
+        ->  (.) (Stream a) (Stream b) (Stream c) (map b c f) (map a b g)
+        )
+    )
+
+    -- Stream
+    (   \(a : *)
+    ->  forall (x : *)
+    ->  (forall (s : *) -> s -> (s -> Pair a s) -> x)
+    ->  x
+    )
+
+    -- map
+    (   \(a : *)
+    ->  \(b : *)
+    ->  \(f : a -> b)
+    ->  \(  st
+        :   forall (x : *) -> (forall (s : *) -> s -> (s -> Pair a s) -> x) -> x
+        )
+    ->  \(x : *)
+    ->  \(S : forall (s : *) -> s -> (s -> Pair b s) -> x)
+    ->  st
+        x
+        (   \(s : *)
+        ->  \(seed : s)
+        ->  \(step : s -> Pair a s)
+        ->  S
+            s
+            seed
+            (\(seed : s) -> first a b s f (step seed))
+        )
+    )
+)
+
+-- id
+(\(a : *) -> \(va : a) -> va)
+
+-- (.)
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : b -> c)
+->  \(g : a -> b)
+->  \(va : a)
+->  f (g va)
+)
+
+-- Pair
+(\(a : *) -> \(b : *) -> forall (x : *) -> (a -> b -> x) -> x)
+
+-- P
+(   \(a : *)
+->  \(b : *)
+->  \(va : a)
+->  \(vb : b)
+->  \(x : *)
+->  \(P : a -> b -> x)
+->  P va vb
+)
+
+-- first
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : a -> b)
+->  \(p : forall (x : *) -> (a -> c -> x) -> x)
+->  \(x : *)
+->  \(Pair : b -> c -> x)
+->  p x (\(va : a) -> \(vc : c) -> Pair (f va) vc)
+)
diff --git a/test/src/example13.mt b/test/src/example13.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example13.mt
@@ -0,0 +1,177 @@
+-- corecursive.mt
+
+-- first :: (a -> b) -> (a, c) -> (b, c)
+-- first f (va, vb) = (f va, vb) 
+-- 
+-- data Stream a = Cons (a, Stream a)
+-- 
+-- map :: (a -> b) -> Stream a -> Stream b
+-- map f (Cons (va, s)) = Cons (first f (va, map f s))
+-- 
+-- -- exampleA = exampleB
+-- 
+-- exampleA :: Stream a -> Stream a
+-- exampleA = map id
+-- 
+-- exampleB :: Stream a -> Stream a
+-- exampleB = id
+-- 
+-- -- exampleC = exampleD
+-- 
+-- exampleC :: (b -> c) -> (a -> b) -> Stream a -> Stream c
+-- exampleC f g = map (f . g)
+-- 
+-- exampleD :: (b -> c) -> (a -> b) -> Stream a -> Stream c
+-- exampleD f g = map f . map g
+
+(   \(id : forall (a : *) -> a -> a)
+->  \(  (.)
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (b -> c)
+    ->  (a -> b)
+    ->  (a -> c)
+    )
+->  \(Pair : * -> * -> *)
+->  \(P : forall (a : *) -> forall (b : *) -> a -> b -> Pair a b)
+->  \(  first
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (a -> b)
+    ->  Pair a c
+    ->  Pair b c
+    )
+
+->  (   \(Stream : * -> *)
+    ->  \(  map
+        :   forall (a : *)
+        ->  forall (b : *)
+        ->  (a -> b)
+        ->  Stream a
+        ->  Stream b
+        )
+
+        -- exampleA = exampleB
+    ->  (   \(exampleA : forall (a : *) -> Stream a -> Stream a)
+        ->  \(exampleB : forall (a : *) -> Stream a -> Stream a)
+
+        -- exampleC = exampleD
+        ->  \(  exampleC
+            :   forall (a : *)
+            ->  forall (b : *)
+            ->  forall (c : *)
+            ->  (b -> c)
+            ->  (a -> b)
+            ->  Stream a
+            ->  Stream c
+            )
+
+        ->  \(  exampleD
+            :   forall (a : *)
+            ->  forall (b : *)
+            ->  forall (c : *)
+            ->  (b -> c)
+            ->  (a -> b)
+            ->  Stream a
+            ->  Stream c
+            )
+
+        -- Uncomment the example you want to test
+--      ->  exampleA
+--      ->  exampleB
+--      ->  exampleC
+        ->  exampleD
+        )
+
+        -- exampleA
+        (\(a : *) -> map a a (id a))
+  
+        -- exampleB
+        (\(a : *) -> id (Stream a))
+
+        -- exampleC
+        (   \(a : *)
+        ->  \(b : *)
+        ->  \(c : *)
+        ->  \(f : b -> c)
+        ->  \(g : a -> b)
+        ->  map a c ((.) a b c f g)
+        )
+
+        --  exampleD
+        (   \(a : *)
+        ->  \(b : *)
+        ->  \(c : *)
+        ->  \(f : b -> c)
+        ->  \(g : a -> b)
+        ->  (.) (Stream a) (Stream b) (Stream c) (map b c f) (map a b g)
+        )
+    )
+
+    -- Stream
+    (   \(a : *)
+    ->  forall (x : *)
+    ->  (forall (s : *) -> s -> (s -> Pair a s) -> x)
+    ->  x
+    )
+
+    -- map
+    (   \(a : *)
+    ->  \(b : *)
+    ->  \(f : a -> b)
+    ->  \(  st
+        :   forall (x : *) -> (forall (s : *) -> s -> (s -> Pair a s) -> x) -> x
+        )
+    ->  \(x : *)
+    ->  \(S : forall (s : *) -> s -> (s -> Pair b s) -> x)
+    ->  st
+        x
+        (   \(s : *)
+        ->  \(seed : s)
+        ->  \(step : s -> Pair a s)
+        ->  S
+            s
+            seed
+            (\(seed : s) -> first a b s f (step seed))
+        )
+    )
+)
+
+-- id
+(\(a : *) -> \(va : a) -> va)
+
+-- (.)
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : b -> c)
+->  \(g : a -> b)
+->  \(va : a)
+->  f (g va)
+)
+
+-- Pair
+(\(a : *) -> \(b : *) -> forall (x : *) -> (a -> b -> x) -> x)
+
+-- P
+(   \(a : *)
+->  \(b : *)
+->  \(va : a)
+->  \(vb : b)
+->  \(x : *)
+->  \(P : a -> b -> x)
+->  P va vb
+)
+
+-- first
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : a -> b)
+->  \(p : forall (x : *) -> (a -> c -> x) -> x)
+->  \(x : *)
+->  \(Pair : b -> c -> x)
+->  p x (\(va : a) -> \(vc : c) -> Pair (f va) vc)
+)
diff --git a/test/src/example14.mt b/test/src/example14.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example14.mt
@@ -0,0 +1,272 @@
+-- recursive.mt
+
+-- The Haskell code we will translate to Morte:
+--
+--     import Prelude hiding (
+--         (+), (*), IO, putStrLn, getLine, (>>=), (>>), return )
+-- 
+--     -- Simple prelude
+--
+--     data Nat = Succ Nat | Zero
+--
+--     zero :: Nat
+--     zero = Zero
+--
+--     one :: Nat
+--     one = Succ Zero
+--
+--     (+) :: Nat -> Nat -> Nat
+--     Zero   + n = n
+--     Succ m + n = m + Succ n
+--
+--     (*) :: Nat -> Nat -> Nat
+--     Zero   * n = Zero
+--     Succ m * n = n + (m * n)
+--
+--     foldNat :: Nat -> (a -> a) -> a -> a
+--     foldNat  Zero    f x = x
+--     foldNat (Succ m) f x = f (foldNat m f x)
+--
+--     data IO r = PutStrLn String (IO r) | GetLine (String -> IO r) | Return r
+--
+--     putStrLn :: String -> IO U
+--     putStrLn str = PutStrLn str (Return Unit)
+--
+--     getLine :: IO String
+--     getLine = GetLine Return
+--
+--     return :: a -> IO a
+--     return = Return
+--
+--     (>>=) :: IO a -> (a -> IO b) -> IO b
+--     PutStrLn str io >>= f = PutStrLn str (io >>= f)
+--     GetLine k       >>= f = GetLine (\str -> k str >>= f)
+--     Return r        >>= f = f r
+--
+--     -- Derived functions
+--
+--     (>>) :: IO U -> IO U -> IO U
+--     m >> n = m >>= \_ -> n
+--
+--     two :: Nat
+--     two = one + one
+--
+--     three :: Nat
+--     three = one + one + one
+--
+--     four :: Nat
+--     four = one + one + one + one
+--
+--     five :: Nat
+--     five = one + one + one + one + one
+--
+--     six :: Nat
+--     six = one + one + one + one + one + one
+--
+--     seven :: Nat
+--     seven = one + one + one + one + one + one + one
+--
+--     eight :: Nat
+--     eight = one + one + one + one + one + one + one + one
+--
+--     nine :: Nat
+--     nine = one + one + one + one + one + one + one + one + one
+--
+--     ten :: Nat
+--     ten = one + one + one + one + one + one + one + one + one + one
+--
+--     replicateM_ :: Nat -> IO U -> IO U
+--     replicateM_ n io = foldNat n (io >>) (return Unit)
+--
+--     ninetynine :: Nat
+--     ninetynine = nine * ten + nine
+--
+--     main_ :: IO U
+--     main_ = getLine >>= putStrLn
+
+-- "Free" variables
+(   \(String : *   )
+->  \(U : *)
+->  \(Unit : U)
+
+    -- Simple prelude
+->  (   \(Nat : *)
+    ->  \(zero : Nat)
+    ->  \(one : Nat)
+    ->  \((+) : Nat -> Nat -> Nat)
+    ->  \((*) : Nat -> Nat -> Nat)
+    ->  \(foldNat : Nat -> forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(IO : * -> *)
+    ->  \(return : forall (a : *) -> a -> IO a)
+    ->  \((>>=)
+        :   forall (a : *)
+        ->  forall (b : *)
+        ->  IO a
+        ->  (a -> IO b)
+        ->  IO b
+        )
+    ->  \(putStrLn : String -> IO U)
+    ->  \(getLine : IO String)
+
+        -- Derived functions
+    ->  (   \((>>) : IO U -> IO U -> IO U)
+        ->  \(two   : Nat)
+        ->  \(three : Nat)
+        ->  \(four  : Nat)
+        ->  \(five  : Nat)
+        ->  \(six   : Nat)
+        ->  \(seven : Nat)
+        ->  \(eight : Nat)
+        ->  \(nine  : Nat)
+        ->  \(ten   : Nat)
+        ->  (   \(replicateM_ : Nat -> IO U -> IO U)
+            ->  \(ninetynine : Nat)
+            ->  replicateM_ ninetynine ((>>=) String U getLine putStrLn)
+            )
+
+            -- replicateM_
+            (   \(n : Nat)
+            ->  \(io : IO U)
+            ->  foldNat n (IO U) ((>>) io) (return U Unit)
+            )
+
+            -- ninetynine
+            ((+) ((*) nine ten) nine)
+        )
+
+        -- (>>)
+        (   \(m : IO U)
+        ->  \(n : IO U)
+        ->  (>>=) U U m (\(_ : U) -> n)
+        )
+
+        -- two
+        ((+) one one)
+
+        -- three
+        ((+) one ((+) one one))
+
+        -- four
+        ((+) one ((+) one ((+) one one)))
+
+        -- five
+        ((+) one ((+) one ((+) one ((+) one one))))
+
+        -- six
+        ((+) one ((+) one ((+) one ((+) one ((+) one one)))))
+
+        -- seven
+        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one))))))
+
+        -- eight
+        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one)))))))
+        -- nine
+        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one))))))))
+
+        -- ten
+        ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one ((+) one one)))))))))
+    )
+
+    -- Nat
+    (   forall (a : *)
+    ->  (a -> a)
+    ->  a
+    ->  a
+    )
+
+    -- zero
+    (   \(a : *)
+    ->  \(Succ : a -> a)
+    ->  \(Zero : a)
+    ->  Zero
+    )
+
+    -- one
+    (   \(a : *)
+    ->  \(Succ : a -> a)
+    ->  \(Zero : a)
+    ->  Succ Zero
+    )
+
+    -- (+)
+    (   \(m : forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(n : forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(a : *)
+    ->  \(Succ : a -> a)
+    ->  \(Zero : a)
+    ->  m a Succ (n a Succ Zero)
+    )
+
+    -- (*)
+    (   \(m : forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(n : forall (a : *) -> (a -> a) -> a -> a)
+    ->  \(a : *)
+    ->  \(Succ : a -> a)
+    ->  \(Zero : a)
+    ->  m a (n a Succ) Zero
+    )
+
+    -- foldNat
+    (   \(n : forall (a : *) -> (a -> a) -> a -> a)
+    ->  n
+    )
+
+    -- IO
+    (   \(r : *)
+    ->  forall (x : *)
+    ->  (String -> x -> x)
+    ->  ((String -> x) -> x)
+    ->  (r -> x)
+    ->  x
+    )
+
+    -- return
+    (   \(a : *)
+    ->  \(va : a)
+    ->  \(x : *)
+    ->  \(PutStrLn : String -> x -> x)
+    ->  \(GetLine : (String -> x) -> x)
+    ->  \(Return : a -> x)
+    ->  Return va
+    )
+
+    -- (>>=)
+    (   \(a : *)
+    ->  \(b : *)
+    ->  \(m : forall (x : *)
+        ->  (String -> x -> x)
+        ->  ((String -> x) -> x)
+        ->  (a -> x)
+        ->  x
+        )
+    ->  \(f : a
+        ->  forall (x : *)
+        -> (String -> x -> x)
+        -> ((String -> x) -> x)
+        -> (b -> x)
+        -> x
+        )
+    ->  \(x : *)
+    ->  \(PutStrLn : String -> x -> x)
+    ->  \(GetLine : (String -> x) -> x)
+    ->  \(Return : b -> x)
+    ->  m x PutStrLn GetLine (\(va : a) -> f va x PutStrLn GetLine Return)
+    )
+
+    -- putStrLn
+    (   \(str : String)
+    ->  \(x : *)
+    ->  \(PutStrLn : String -> x -> x  )
+    ->  \(GetLine  : (String -> x) -> x)
+    ->  \(Return   : U -> x)
+    ->  PutStrLn str (Return Unit)
+    )
+
+    -- getLine
+    (   \(x : *)
+    ->  \(PutStrLn : String -> x -> x  )
+    ->  \(GetLine  : (String -> x) -> x)
+    ->  \(Return   : String -> x)
+    -> GetLine Return
+    )
+)
diff --git a/test/src/example15.mt b/test/src/example15.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example15.mt
@@ -0,0 +1,148 @@
+-- corecursive.mt
+
+-- data IOF r s = PutStrLn String s | GetLine (String -> s) | Return r
+--
+-- data IO r = forall s . MkIO s (s -> IOF r s)
+--
+-- main = MkIO Nothing (maybe (\str -> PutStrLn str Nothing) (GetLine Just))
+
+(   \(String : *)
+->  (   \(Maybe : * -> *)
+    ->  \(Just : forall (a : *) -> a -> Maybe a)
+    ->  \(Nothing : forall (a : *) -> Maybe a)
+    ->  \(  maybe
+        :   forall (a : *) -> Maybe a -> forall (x : *) -> (a -> x) -> x -> x
+        )
+    ->  \(IOF : * -> * -> *)
+    ->  \(  PutStrLn
+        :   forall (r : *)
+        ->  forall (s : *)
+        ->  String
+        ->  s
+        ->  IOF r s
+        )
+    ->  \(  GetLine
+        :   forall (r : *)
+        ->  forall (s : *)
+        ->  (String -> s)
+        ->  IOF r s
+        )
+    ->  \(  Return
+        :   forall (r : *)
+        ->  forall (s : *)
+        ->  r
+        ->  IOF r s
+        )
+    ->  (   \(IO : * -> *)
+        ->  \(  MkIO
+            :   forall (r : *) -> forall (s : *) -> s -> (s -> IOF r s) -> IO r
+            )
+        ->  (   \(main : forall (r : *) -> IO r)
+            ->  main
+            )
+
+            -- main
+            (   \(r : *)
+            ->  MkIO
+                r
+                (Maybe String)
+                (Nothing String)
+                (   \(m : Maybe String)
+                ->  maybe
+                        String
+                        m
+                        (IOF r (Maybe String))
+                        (\(str : String) ->
+                            PutStrLn r (Maybe String) str (Nothing String)
+                        )
+                        (GetLine r (Maybe String) (Just String))
+                )
+            )
+        )
+
+        -- IO
+        (   \(r : *)
+        ->  forall (x : *)
+        ->  (forall (s : *) -> s -> (s -> IOF r s) -> x)
+        ->  x
+        )
+
+        -- MkIO
+        (   \(r : *)
+        ->  \(s : *)
+        ->  \(seed : s)
+        ->  \(step : s -> IOF r s)
+        ->  \(x : *)
+        ->  \(k : forall (s : *) -> s -> (s -> IOF r s) -> x)
+        ->  k s seed step
+        )
+    )
+
+    -- Maybe
+    (\(a : *) -> forall (x : *) -> (a -> x) -> x -> x)
+
+    -- Just
+    (   \(a : *)
+    ->  \(va : a)
+    ->  \(x : *)
+    ->  \(Just : a -> x)
+    ->  \(Nothing : x)
+    ->  Just va
+    )
+
+    -- Nothing
+    (   \(a : *)
+    ->  \(x : *)
+    ->  \(Just : a -> x)
+    ->  \(Nothing : x)
+    ->  Nothing
+    )
+
+    -- maybe
+    (\(a : *) -> \(m : forall (x : *) -> (a -> x) -> x -> x) -> m)
+
+    -- IOF
+    (   \(r : *)
+    ->  \(s : *)
+    ->  forall (x : *)
+    ->  (String -> s -> x)
+    ->  ((String -> s) -> x)
+    ->  (r -> x)
+    ->  x
+    )
+
+    -- PutStrLn
+    (   \(r : *)
+    ->  \(s : *)
+    ->  \(str : String)
+    ->  \(vs : s)
+    ->  \(x : *)
+    ->  \(PutStrLn : String -> s -> x)
+    ->  \(GetLine : (String -> s) -> x)
+    ->  \(Return : r -> x)
+    ->  PutStrLn str vs
+    )
+
+    -- GetLine
+    (   \(r : *)
+    ->  \(s : *)
+    ->  \(k : String -> s)
+    ->  \(x : *)
+    ->  \(PutStrLn : String -> s -> x)
+    ->  \(GetLine : (String -> s) -> x)
+    ->  \(Return : r -> x)
+    ->  GetLine k
+    )
+
+    -- Return
+    (   \(r : *)
+    ->  \(s : *)
+    ->  \(vr : r)
+    ->  \(x : *)
+    ->  \(PutStrLn : String -> s -> x)
+    ->  \(GetLine : (String -> s) -> x)
+    ->  \(Return : r -> x)
+    ->  Return vr
+    )
+
+)
diff --git a/test/src/example2.mt b/test/src/example2.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example2.mt
@@ -0,0 +1,8 @@
+-- id2.mt
+
+(   \(id : forall (a : *) -> a -> a)
+->  id (forall (a : *) -> a -> a) id  -- Apply the identity function to itself
+)
+
+-- id
+(\(a : *) -> \(x : a) -> x)
diff --git a/test/src/example3.mt b/test/src/example3.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example3.mt
@@ -0,0 +1,27 @@
+-- bool.mt
+
+-- let data Bool = True | False
+--
+-- in  if True then One else Zero
+
+(   \(Bool : *)
+->  \(True  : Bool)
+->  \(False : Bool)
+->  \(if : Bool -> forall (r : *) -> r -> r -> r)
+->  \(Int  : *)
+->  \(Zero : Int)
+ -> \(One  : Int)
+->  if True Int One Zero
+)
+
+-- Bool
+(forall (r : *) -> r -> r -> r)
+
+-- True
+(\(r : *) -> \(x : r) -> \(_ : r) -> x)
+
+-- False
+(\(r : *) -> \(_ : r) -> \(x : r) -> x)
+
+-- if
+(\(b : forall (r : *) -> r -> r -> r) -> b)
diff --git a/test/src/example4.mt b/test/src/example4.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example4.mt
@@ -0,0 +1,39 @@
+-- pair.mt
+
+-- let Pair a b = P a b
+--
+-- in  \x y -> snd (P x y)
+
+(   \(Pair : * -> * -> *)
+->  \(P    : forall (a : *) -> forall (b : *) -> a -> b -> Pair a b)
+->  \(fst  : forall (a : *) -> forall (b : *) -> Pair a b -> a)
+->  \(snd  : forall (a : *) -> forall (b : *) -> Pair a b -> b)
+->  \(a : *) -> \(x : a) -> \(y : a) -> snd a a (P a a x y)
+)
+
+-- Pair
+(\(a : *) -> \(b : *) -> forall (r : *) -> (a -> b -> r) -> r)
+
+-- P
+(   \(a : *)
+->  \(b : *)
+->  \(va : a)
+->  \(vb : b)
+->  \(r : *)
+->  \(Pair : a -> b -> r)
+->  Pair va vb
+)
+
+-- fst
+(   \(a : *)
+->  \(b : *)
+->  \(p : forall (r : *) -> (a -> b -> r) -> r)
+->  p a (\(x : a) -> \(_ : b) -> x)
+)
+
+-- snd
+(   \(a : *)
+->  \(b : *)
+->  \(p : forall (r : *) -> (a -> b -> r) -> r)
+->  p b (\(_ : a) -> \(x : b) -> x)
+)
diff --git a/test/src/example5.mt b/test/src/example5.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example5.mt
@@ -0,0 +1,79 @@
+-- all.mt
+
+-- let data Bool = True | False
+--
+--     data List a = Cons a (List a) | Nil
+--
+-- in  let (&&) :: Bool -> Bool -> Bool
+--         (&&) b1 b2 = if b1 then b2 else False
+--
+--         bools :: List Bool
+--         bools = Cons True (Cons True (Cons True Nil))
+--
+--     in  foldr bools (&&) True
+
+(   \(Bool : *)
+->  \(True  : Bool)
+->  \(False : Bool)
+->  \(if : Bool -> forall (r : *) -> r -> r -> r)
+->  \(List : * -> *)
+->  \(Cons : forall (a : *) -> a -> List a -> List a)
+->  \(Nil  : forall (a : *)                -> List a)
+->  \(  foldr
+    :   forall (a : *) -> List a -> forall (r : *) -> (a -> r -> r) -> r -> r
+    )
+->  (   \((&&) : Bool -> Bool -> Bool)
+    ->  \(bools : List Bool)
+    ->  foldr Bool bools Bool (&&) True
+    )
+
+    -- (&&)
+    (\(x : Bool) -> \(y : Bool) -> if x Bool y False)
+
+    -- bools
+    (Cons Bool True (Cons Bool True (Cons Bool True (Nil Bool))))
+)
+
+-- Bool
+(forall (r : *) -> r -> r -> r)
+
+-- True
+(\(r : *) -> \(x : r) -> \(_ : r) -> x)
+
+-- False
+(\(r : *) -> \(_ : r) -> \(x : r) -> x)
+
+-- if
+(\(b : forall (r : *) -> r -> r -> r) -> b)
+
+-- List
+(   \(a : *)
+->  forall (list : *)
+->  (a -> list -> list)  -- Cons
+->  list                 -- Nil
+->  list
+)
+
+-- Cons
+(   \(a : *)
+->  \(va  : a)
+->  \(vas : forall (list : *) -> (a -> list -> list) -> list -> list)
+->  \(list : *)
+->  \(Cons : a -> list -> list)
+->  \(Nil  : list)
+->  Cons va (vas list Cons Nil)
+)
+
+-- Nil
+(   \(a : *)
+->  \(list : *)
+->  \(Cons : a -> list -> list)
+->  \(Nil  : list)
+->  Nil
+)
+
+-- foldr
+(   \(a : *)
+->  \(vas : forall (list : *) -> (a -> list -> list) -> list -> list)
+->  vas
+)
diff --git a/test/src/example6.mt b/test/src/example6.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example6.mt
@@ -0,0 +1,24 @@
+-- mapid1.mt
+
+(    \(List : * -> *)
+->   \(map  : forall (a : *) -> forall (b : *) -> (a -> b) -> List a -> List b)
+->   \(id   : forall (a : *) -> a -> a)
+    ->   \(a : *) -> map a a (id a)
+)
+
+-- List
+(\(a : *) -> forall (x : *) -> (a -> x -> x) -> x -> x)
+
+-- map
+(   \(a : *)
+->  \(b : *)
+->  \(f : a -> b)
+->  \(l : forall (x : *) -> (a -> x -> x) -> x -> x)
+->  \(x : *)
+->  \(Cons : b -> x -> x)
+->  \(Nil: x)
+->  l x (\(va : a) -> \(vx : x) -> Cons (f va) vx) Nil
+)
+
+-- id
+(\(a : *) -> \(va : a) -> va)
diff --git a/test/src/example7.mt b/test/src/example7.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example7.mt
@@ -0,0 +1,24 @@
+-- mapid2.mt
+
+(    \(List : * -> *)
+->   \(map  : forall (a : *) -> forall (b : *) -> (a -> b) -> List a -> List b)
+->   \(id   : forall (a : *) -> a -> a)
+    ->   \(a : *) -> id (List a)
+)
+
+-- List
+(\(a : *) -> forall (x : *) -> (a -> x -> x) -> x -> x)
+
+-- map
+(   \(a : *)
+->  \(b : *)
+->  \(f : a -> b)
+->  \(l : forall (x : *) -> (a -> x -> x) -> x -> x)
+->  \(x : *)
+->  \(Cons : b -> x -> x)
+->  \(Nil: x)
+->  l x (\(va : a) -> \(vx : x) -> Cons (f va) vx) Nil
+)
+
+-- id
+(\(a : *) -> \(va : a) -> va)
diff --git a/test/src/example8.mt b/test/src/example8.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example8.mt
@@ -0,0 +1,45 @@
+-- mapcomp1.mt
+
+-- map (f . g)
+
+(   \(List : * -> *)
+->  \(map  : forall (a : *) -> forall (b : *) -> (a -> b) -> List a -> List b)
+->  \(  (.)
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (b -> c)
+    ->  (a -> b)
+    ->  (a -> c)
+    )
+    ->  \(a : *)
+    ->  \(b : *)
+    ->  \(c : *)
+    ->  \(f : b -> c)
+    ->  \(g : a -> b)
+    ->  map a c ((.) a b c f g)
+)
+
+-- List
+(\(a : *) -> forall (x : *) -> (a -> x -> x) -> x -> x)
+
+-- map
+(   \(a : *)
+->  \(b : *)
+->  \(f : a -> b)
+->  \(l : forall (x : *) -> (a -> x -> x) -> x -> x)
+->  \(x : *)
+->  \(Cons : b -> x -> x)
+->  \(Nil: x)
+->  l x (\(va : a) -> \(vx : x) -> Cons (f va) vx) Nil
+)
+
+-- (.)
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : b -> c)
+->  \(g : a -> b)
+->  \(va : a)
+->  f (g va)
+)
diff --git a/test/src/example9.mt b/test/src/example9.mt
new file mode 100644
--- /dev/null
+++ b/test/src/example9.mt
@@ -0,0 +1,43 @@
+-- mapcomp2.mt
+
+(   \(List : * -> *)
+->  \(map  : forall (a : *) -> forall (b : *) -> (a -> b) -> List a -> List b)
+->  \(  (.)
+    :   forall (a : *)
+    ->  forall (b : *)
+    ->  forall (c : *)
+    ->  (b -> c)
+    ->  (a -> b)
+    ->  (a -> c)
+    )
+    ->  \(a : *)
+    ->  \(b : *)
+    ->  \(c : *)
+    ->  \(f : b -> c)
+    ->  \(g : a -> b)
+    ->  (.) (List a) (List b) (List c) (map b c f) (map a b g)
+)
+
+-- List
+(\(a : *) -> forall (x : *) -> (a -> x -> x) -> x -> x)
+
+-- map
+(   \(a : *)
+->  \(b : *)
+->  \(f : a -> b)
+->  \(l : forall (x : *) -> (a -> x -> x) -> x -> x)
+->  \(x : *)
+->  \(Cons : b -> x -> x)
+->  \(Nil: x)
+->  l x (\(va : a) -> \(vx : x) -> Cons (f va) vx) Nil
+)
+
+-- (.)
+(   \(a : *)
+->  \(b : *)
+->  \(c : *)
+->  \(f : b -> c)
+->  \(g : a -> b)
+->  \(va : a)
+->  f (g va)
+)
