hplayground (empty) → 0.1.0.1
raw patch · 7 files changed
+3859/−0 lines, 7 filesdep +basedep +containersdep +data-defaultsetup-changed
Dependencies added: base, containers, data-default, haste-compiler, haste-lib, haste-perch, monads-tf, transformers
Files
- LICENSE +27/−0
- Setup.hs +2/−0
- hplayground.cabal +50/−0
- src/Haste/HPlay/Cell.hs +70/−0
- src/Haste/HPlay/View.hs +1208/−0
- src/Main.hs +363/−0
- src/Main.html +2139/−0
+ LICENSE view
@@ -0,0 +1,27 @@+Copyright (c) Alberto Gómez Corona 2008++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions+are met:+1. Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.+2. Redistributions in binary form must reproduce the above copyright+ notice, this list of conditions and the following disclaimer in the+ documentation and/or other materials provided with the distribution.+3. Neither the name of the author nor the names of his contributors+ may be used to endorse or promote products derived from this software+ without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF+SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ hplayground.cabal view
@@ -0,0 +1,50 @@+name: hplayground+version: 0.1.0.1+cabal-version: >=1.8+build-type: Simple+license: BSD3+license-file: LICENSE+maintainer: agocorona@gmail.com+stability: experimental+bug-reports: https://github.com/agocorona/MFlow/issues+synopsis: a client-side haskell framework that compiles to javascript with the haste compiler+description: create and compose reactive widgets in the client side using idiomatic haskell.+ Formlets with reactive effects in the client side++homepage: https://github.com/agocorona/hplayground+category: Web+author: Alberto Gómez Corona+data-dir: ""+extra-source-files: src/Main.hs, src/Main.html++source-repository head+ type: git+ location: http://github.com/agocorona/hplayground++Flag Haste-inst+ Description: either if it is being compiled with haste-inst or with cabal+ Default: False+++library+ if flag(haste-inst)+ build-depends: base >4.0 && <5, transformers -any,+ containers -any, data-default -any, monads-tf,+ haste-lib -any, haste-perch -any+ else+ build-depends: base >4.0 && <5, transformers -any,+ containers -any, data-default -any, monads-tf,+ haste-compiler -any, haste-perch -any++ hs-source-dirs: src .+ exposed-modules: Haste.HPlay.View Haste.HPlay.Cell++--executable Main+-- build-depends: base >4.0 && <5, transformers -any, monads-tf -any,+-- containers -any, data-default -any,+-- haste-lib -any, haste-perch+-- main-is: Main.hs+-- buildable: True+-- hs-source-dirs: src .++
+ src/Haste/HPlay/Cell.hs view
@@ -0,0 +1,70 @@+-----------------------------------------------------------------------------+--+-- Module : Cell+-- Copyright :+-- License : BSD3+--+-- Maintainer : agocorona@gmail.com+-- Stability : experimental+-- Portability :+--+-- |+--+-----------------------------------------------------------------------------++module Haste.HPlay.Cell where+import Haste.HPlay.View+import Control.Monad.IO.Class+import Haste+import Data.Typeable+import Unsafe.Coerce+++data Cell a = Cell { mk :: Maybe a -> Widget a+ , setter :: a -> IO()+ , getter :: IO a}++--instance Functor Cell where+-- fmap f cell = cell{setter= \c x -> c .= f x, getter = \cell -> get cell >>= return . f}++++boxCell id = Cell{ mk= \mv -> getParam (Just id) "text" mv+ , setter= \ x -> withElem id $ \e -> setProp e "value" (show1 x)+ , getter= withElem id $ \e -> getProp e "value" >>= return . read1}+ where+ show1 x= if typeOf x== typeOf (undefined :: String)+ then unsafeCoerce x+ else show x+ read1 s= if typeOf s== typeOf (undefined :: String)+ then unsafeCoerce s+ else read s++(.=) cell x = liftIO $ (setter cell ) x++get cell = liftIO $ getter cell+++(..=) cell cell'= get cell' >>= (.=) . cell++infixr 0 .=, ..=++-- experimental: to permit cell arithmetic++instance Num a => Num (Cell a) where+ c + c'= Cell undefined undefined $+ do r1 <- get c+ r2 <- get c'+ return $ r1 + r2++ c * c'= Cell undefined undefined $+ do r1 <- get c+ r2 <- get c'+ return $ r1 * r2++ abs c= c{getter= get c >>= return . abs}++ signum c= c{getter= get c >>= return . signum}++ fromInteger i= Cell undefined undefined . return $ fromInteger i+
+ src/Haste/HPlay/View.hs view
@@ -0,0 +1,1208 @@+----------------------------------------------------------------------------- +-- +-- Module : View +-- Copyright : +-- License : BSD3 +-- +-- Maintainer : agocorona@gmail.com +-- Stability : experimental +-- Portability : +-- +-- | +-- +----------------------------------------------------------------------------- + +{-# LANGUAGE FlexibleContexts, FlexibleInstances + , TypeFamilies, DeriveDataTypeable, UndecidableInstances, ExistentialQuantification + , GADTs + #-} +module Haste.HPlay.View(+Widget,++-- * widget combinators and modifiers++wcallback, (<+>), (**>), (<**), validate+,firstOf, manyOf, allOf+,(<<<),(<<),(<++),(++>),(<!)++-- * basic widgets++,getString,inputString, getInteger,inputInteger,+getInt, inputInt,getPassword,inputPassword,+setRadio,setRadioActive,getRadio+,setCheckBox, getCheckBoxes+,getTextBox, getMultilineText,textArea,getBool+,getSelect,setOption,setSelectedOption, wlabel,+resetButton,inputReset, submitButton,+inputSubmit, wlink, noWidget, stop,wraw, isEmpty++-- * out of flow updates+,at, UpdateMethod(..)++-- * Session data storage+,getSessionData,getSData,setSessionData,setSData+,delSessionData,delSData++-- * reactive and events+,resetEventData,getEventData,EventData(..),EvData(..)+,raiseEvent, fire, wake, react, pass+,continueIf, wtimeout, Event(..)++-- * running it+,runWidget, runWidgetId, runBody, addHeader++-- * Perch is reexported+,module Haste.Perch++-- * low level and internals+,getNextId,genNewId+,getParam+,FormInput(..)+,View(..),FormElm(..)++) where +import Control.Applicative +import Data.Monoid +import Control.Monad.State +import Control.Monad.IO.Class +import Data.Typeable +import Unsafe.Coerce +import Data.Maybe +import Haste+import Haste.Prim +import Haste.Foreign(ffi) +import Unsafe.Coerce +import System.IO.Unsafe +import Control.Concurrent.MVar +import qualified Data.Map as M +import Control.Monad.Trans.Maybe +import Prelude hiding(id) +import Haste.Perch +-- | @View v m a@ is a widget (formlet) with formatting `v` running the monad `m` (usually `IO`) and which return a value of type `a` +-- +-- It has 'Applicative', 'Alternative' and 'Monad' instances. +-- +-- Things to know about these instances: +-- +-- If the View expression does not validate, ask will present the page again. +-- +-- /Alternative instance/: Both alternatives are executed. The rest is as usual +-- +-- /Monad Instance/: +-- +-- The rendering of each statement is added to the previous. If you want to avoid this, use 'wcallback' +-- +-- The execution is stopped when the statement has a formlet-widget that does not validate and +-- return an invalid response (So it will present the page again if no other widget in the expression validates). +-- +-- The monadic code is executed from the beginning each time the page is presented or refreshed +-- +-- use 'pageFlow' if your page has more than one monadic computation with dynamic behaviour +-- +-- use 'pageFlow' to identify each subflow branch of a conditional +-- +-- For example: +-- +-- > pageFlow "myid" $ do +-- > r <- formlet1 +-- > liftIO $ ioaction1 r +-- > s <- formlet2 +-- > liftIO $ ioaction2 s +-- > case s of +-- > True -> pageFlow "idtrue" $ do .... +-- > False -> paeFlow "idfalse" $ do ... +-- > ... +-- +-- Here if @formlet2@ do not validate, @ioaction2@ is not executed. But if @formLet1@ validates and the +-- page is refreshed two times (because @formlet2@ has failed, see above),then @ioaction1@ is executed two times. +-- use 'cachedByKey' if you want to avoid repeated IO executions. +data NeedForm= HasForm | HasElems | NoElems deriving Show +type SData= () + +--instance MonadState ( Widget) where +-- type StateType ( Widget)= MFlowState +-- +--instance MonadState IO where +-- type StateType IO= MFlowState + +data EventF= forall b c.EventF (IO (Maybe b)) (b -> IO (Maybe c)) -- + +data MFlowState= MFlowState { mfPrefix :: String,mfSequence :: Int + , needForm :: NeedForm, process :: EventF+ , fixed :: Bool + , mfData :: M.Map TypeRep SData} + +type Widget a= View Perch IO a + +type WState view m = StateT MFlowState m +data FormElm view a = FormElm view (Maybe a) +newtype View v m a = View { runView :: WState v m (FormElm v a)} + +mFlowState0= MFlowState "" 0 NoElems (EventF (return Nothing) + (const $ return Nothing) ) False M.empty + + +instance Functor (FormElm view ) where + fmap f (FormElm form x)= FormElm form (fmap f x) + +instance (Monoid view) => Monoid (FormElm view a) where + mempty= FormElm mempty Nothing + mappend (FormElm f1 x1) (FormElm f2 x2)= FormElm (f1 <> f2) (x1 <|> x2) + +instance (Monad m,Functor m) => Functor (View view m) where + fmap f x= View $ fmap (fmap f) $ runView x + + +instance (Monoid view,Functor m, Monad m) => Applicative (View view m) where + pure a = View . return . FormElm mempty $ Just a + View f <*> View g= View $ + f >>= \(FormElm form1 k) -> + g >>= \(FormElm form2 x) -> + return $ FormElm (form1 `mappend` form2) (k <*> x) + +instance (Monoid view, Functor m, Monad m) => Alternative (View view m) where + empty= View $ return $ FormElm mempty Nothing + View f <|> View g= View $ do + FormElm form1 x <- f + FormElm form2 y <- g + return $ FormElm (form1 <> form2) (x <|> y) + + +strip st x= View $ do + st' <- get + put st'{mfSequence= mfSequence st} + FormElm _ mx <- runView x + put st' + return $ FormElm mempty mx + +setEventCont :: Widget a -> (a -> Widget b) -> String -> StateT MFlowState IO EventF +setEventCont x f id= do + st <- get + let conf = process st + case conf of + EventF x' f' -> do + let addto f f'= \x -> do + mr <- runWidgetId (f x) id + case mr of + Nothing -> return Nothing + Just x' -> f' x' + idx= runWidgetId ( strip st x) id + put st{process= EventF idx (f `addto` unsafeCoerce f') } + return conf + +resetEventCont cont= modify $ \s -> s {process= cont} + +instance Monad (View Perch IO) where + x >>= f = View $ do + id <- genNewId + contold <- setEventCont x f id + FormElm form1 mk <- runView x + resetEventCont contold+ let span= nelem "span" `attrs` [("id", id)] + case mk of + Just k -> do + FormElm form2 mk <- runView $ f k+ return $ FormElm (form1 <> (span `child` form2)) mk + Nothing -> + return $ FormElm (form1 <> span) Nothing + + + return = View . return . FormElm mempty . Just +-- fail msg= View . return $ FormElm [inRed msg] Nothing ++ +--static w= View $ do+-- modify $ \st -> st{fixed=True}+-- runView w + +instance (FormInput v,Monad (View v m), Monad m, Functor m, Monoid a) => Monoid (View v m a) where + mappend x y = mappend <$> x <*> y -- beware that both operands must validate to generate a sum + mempty= return mempty + + +-- | It is a callback in the view monad. The callback rendering substitutes the widget rendering +-- when the latter is validated, without afecting the rendering of other widgets. This allow +-- the simultaneous execution of different behaviours in different widgets in the +-- same page. +wcallback + :: Widget a -> (a ->Widget b) -> Widget b +wcallback x f = View $ do + idhide <- genNewId + id <- genNewId+ runView $ identified idhide x >>= delBefore idhide f + where + delBefore id f = \x -> View $ do + FormElm render mx <- runView $ f x + return $ FormElm (del id <> render ) mx + where + del id= Perch $ \e' -> do + withElem id $ \e -> do + par <- parent e + removeChild e par + return e' + +identified id w= View $ do + let span= nelem "span" `attr` ("id", id) + FormElm f mx <- runView w + return $ FormElm (span `child` f) mx +++--wcallback +-- :: Widget a -> (a -> Widget b) -> Widget b +--wcallback x' f = View $ do +-- id <- genNewId +-- let x = identified id x' +-- +-- contold <- setEventCont x f id +-- FormElm form1 mk <- runView x +-- resetEventCont contold +-- case mk of +-- Just k -> do +-- FormElm form2 mk <- runView $ f k +-- return $ FormElm form2 mk +-- Nothing -> +-- return $ FormElm form1 Nothing +++ +instance (FormInput view,Monad m,Monad (View view m)) => MonadState (View view m) where + type StateType (View view m)= MFlowState + get = View $ get >>= return . FormElm mempty . Just + put st = View $ put st >>= return . FormElm mempty . Just + + +instance (FormInput view,Monad (View view m),MonadIO m) => MonadIO (View view m) where + liftIO io= let x= liftIO io in x `seq` lift x + + +----- some combinators ---- + +-- | Join two widgets in the same page +-- the resulting widget, when `ask`ed with it, return a 2 tuple of their validation results +-- if both return Noting, the widget return @Nothing@ (invalid). +-- +-- it has a low infix priority: @infixr 2@ +-- +-- > r <- ask widget1 <+> widget2 +-- > case r of (Just x, Nothing) -> .. +(<+>) , mix :: (Monad m, FormInput view) + => View view m a + -> View view m b + -> View view m (Maybe a, Maybe b) +mix digest1 digest2= View $ do + FormElm f1 mx' <- runView digest1 + s1 <- get + FormElm f2 my' <- runView digest2 + s2 <- get + return $ FormElm (f1 <> f2) + $ case (mx',my') of + (Nothing, Nothing) -> Nothing + other -> Just other + +infixr 2 <+> + +(<+>) = mix + + + +-- | The first elem result (even if it is not validated) is discarded, and the secod is returned +-- . This contrast with the applicative operator '*>' which fails the whole validation if +-- the validation of the first elem fails. +-- +-- The first element is displayed however, as happens in the case of '*>' . +-- +-- Here @w\'s@ are widgets and @r\'s@ are returned values +-- +-- @(w1 <* w2)@ will return @Just r1@ only if w1 and w2 are validated +-- +-- @(w1 <** w2)@ will return @Just r1@ even if w2 is not validated +-- +-- it has a low infix priority: @infixr 1@ + +(**>) :: (Functor m, Monad m, FormInput view) + => View view m a -> View view m b -> View view m b + +(**>) f g = View $ do + FormElm form1 k <- runView $ valid f + FormElm form2 x <- runView g + return $ FormElm (form1 <> form2) (k *> x) + + + +valid form= View $ do + FormElm form mx <- runView form + return $ FormElm form $ Just undefined + +infixr 1 **> , <** + +-- | The second elem result (even if it is not validated) is discarded, and the first is returned +-- . This contrast with the applicative operator '*>' which fails the whole validation if +-- the validation of the second elem fails. +-- The second element is displayed however, as in the case of '<*'. +-- see the `<**` examples +-- +-- it has a low infix priority: @infixr 1@ +(<**) :: (Functor m, Monad m, FormInput view) => + View view m a -> View view m b -> View view m a +-- (<**) form1 form2 = form1 <* valid form2 +(<**) f g = View $ do + FormElm form1 k <- runView f + s1 <- get + FormElm form2 x <- runView $ valid g + s2 <- get + + + return $ FormElm (form1 <> form2) (k <* x) + + + + + +instance Monoid view => MonadTrans (View view) where + lift f = View $ (lift f) >>= \x -> return $ FormElm mempty $ Just x + + +type Name= String +type Type= String +type Value= String +type Checked= Bool +type OnClick= Maybe String + + +-- | Minimal interface for defining the basic form and link elements. The core of MFlow is agnostic +-- about the rendering package used. Every formatting (either HTML or not) used with MFlow must have an +-- instance of this class. +-- See "MFlow.Forms.Blaze.Html for the instance for blaze-html" "MFlow.Forms.XHtml" for the instance +-- for @Text.XHtml@ and MFlow.Forms.HSP for the instance for Haskell Server Pages. +class (Monoid view,Typeable view) => FormInput view where + fromStr :: String -> view + fromStrNoEncode :: String -> view + ftag :: String -> view -> view + inred :: view -> view + flink :: String -> view -> view + flink1:: String -> view + flink1 verb = flink verb (fromStr verb) + finput :: Name -> Type -> Value -> Checked -> OnClick -> view + ftextarea :: String -> String -> view + fselect :: String -> view -> view + foption :: String -> view -> Bool -> view + foption1 :: String -> Bool -> view + foption1 val msel= foption val (fromStr val) msel + formAction :: String -> String -> view -> view + attrs :: view -> Attribs -> view + +type Attribs= [(String, String)] + + +data ParamResult v a= NoParam | NotValidated String v | Validated a deriving (Read, Show) + +valToMaybe (Validated x)= Just x +valToMaybe _= Nothing + +isValidated (Validated x)= True +isValidated _= False + +fromValidated (Validated x)= x +fromValidated NoParam= error $ "fromValidated : NoParam" +fromValidated (NotValidated s err)= error $ "fromValidated: NotValidated "++ s + +getParam1 :: (MonadIO m, MonadState m, Typeable a, Read a, FormInput v) + => String -> m (ParamResult v a) +getParam1 par = do + me <- elemById par + case me of + Nothing -> return NoParam + Just e -> do + mv <- getValue e + case mv of + Nothing -> return NoParam + Just v -> do + readParam v + + +type Params= Attribs + + + +readParam :: (Monad m, MonadState m, Typeable a, Read a, FormInput v) + => String -> m (ParamResult v a) +readParam x1 = r + where + r= maybeRead x1 + + getType :: m (ParamResult v a) -> a + getType= undefined + x= getType r + maybeRead str= do + let typeofx = typeOf x + if typeofx == typeOf ( undefined :: String) then + return . Validated $ unsafeCoerce str + else case readsPrec 0 $ str of + [(x,"")] -> return $ Validated x + _ -> do + let err= inred . fromStr $ "can't read \"" ++ str ++ "\" as type " ++ show (typeOf x) + return $ NotValidated str err + +-- | Validates a form or widget result against a validating procedure +-- +-- @getOdd= getInt Nothing `validate` (\x -> return $ if mod x 2==0 then Nothing else Just "only odd numbers, please")@ +validate + :: (FormInput view, Monad m,Monad (View view m)) => + View view m a + -> (a -> WState view m (Maybe view)) + -> View view m a +validate formt val= do + mx <- View $ do + FormElm form mx <- runView formt + return $ FormElm form (Just mx) + View $ do + case mx of + Just x -> do + me <- val x + case me of + Just str -> return $ FormElm (inred str) Nothing + Nothing -> return $ FormElm mempty mx + _ -> return $ FormElm mempty Nothing + +-- | Generate a new string. Useful for creating tag identifiers and other attributes. +-- +-- if the page is refreshed, the identifiers generated are the same. +genNewId :: (StateType m ~ MFlowState, MonadState m) => m String +genNewId= do + st <- get + let n= mfSequence st + prefseq= mfPrefix st + put $ st{mfSequence= n+1} + + return $ 'p':show n++prefseq + + +-- | get the next ideitifier that will be created by genNewId +getNextId :: (StateType m ~ MFlowState,MonadState m) => m String +getNextId= do + st <- get + let n= mfSequence st + prefseq= mfPrefix st + return $ 'p':show n++prefseq + + +-- | Display a text box and return a non empty String +getString :: (StateType (View view m) ~ MFlowState,FormInput view,Monad(View view m),MonadIO m) => + Maybe String -> View view m String +getString ms = getTextBox ms +-- `validate` +-- \s -> if Prelude.null s then return (Just $ fromStr "") +-- else return Nothing + +inputString :: (StateType (View view m) ~ MFlowState,FormInput view,Monad(View view m),MonadIO m) => + Maybe String -> View view m String +inputString= getString + +-- | Display a text box and return an Integer (if the value entered is not an Integer, fails the validation) +getInteger :: (StateType (View view m) ~ MFlowState,FormInput view, MonadIO m) => + Maybe Integer -> View view m Integer +getInteger = getTextBox + +inputInteger :: (StateType (View view m) ~ MFlowState,FormInput view, MonadIO m) => + Maybe Integer -> View view m Integer +inputInteger= getInteger + +-- | Display a text box and return a Int (if the value entered is not an Int, fails the validation) +getInt :: (StateType (View view m) ~ MFlowState,FormInput view, MonadIO m) => + Maybe Int -> View view m Int +getInt = getTextBox + +inputInt :: (StateType (View view m) ~ MFlowState,FormInput view, MonadIO m) => + Maybe Int -> View view m Int +inputInt = getInt + +-- | Display a password box +getPassword :: (FormInput view,StateType (View view m) ~ MFlowState, + MonadIO m) => + View view m String +getPassword = getParam Nothing "password" Nothing + +inputPassword :: (StateType (View view m) ~ MFlowState,FormInput view, + MonadIO m) => + View view m String +inputPassword= getPassword + +newtype Radio a= Radio a + + + +-- | Implement a radio button +-- the parameter is the name of the radio group +setRadio :: (FormInput view, MonadIO m, + Typeable a, Eq a, Show a) => + a -> String -> View view m (Radio a) +setRadio v n= View $ do + id <- genNewId + st <- get + put st{needForm= HasElems} + me <- liftIO $ elemById id + checked <- case me of + Nothing -> return "" + Just e -> liftIO $ getProp e "checked" + let strs= if checked=="true" then Just v else Nothing +-- let mn= if null strs then False else True + ret= fmap Radio strs + str = if typeOf v == typeOf(undefined :: String) + then unsafeCoerce v else show v + return $ FormElm + ( finput id "radio" str ( isJust strs ) Nothing `attrs` [("name",n)]) + ret + + +setRadioActive rs x= setRadio rs x `raiseEvent` OnClick + +-- | encloses a set of Radio boxes. Return the option selected +getRadio + :: (Monad (View view m), Monad m, Functor m, FormInput view) => + [String -> View view m (Radio a)] -> View view m a +getRadio ws = View $ do + id <- genNewId + fs <- mapM (\w -> runView (w id)) ws + let FormElm render mx = mconcat fs + return $ FormElm render $ fmap (\(Radio r) -> r) mx + + +data CheckBoxes = CheckBoxes [String] + +instance Monoid CheckBoxes where + mappend (CheckBoxes xs) (CheckBoxes ys)= CheckBoxes $ xs ++ ys + mempty= CheckBoxes [] + + +-- | Display a text box and return the value entered if it is readable( Otherwise, fail the validation) +setCheckBox :: (FormInput view, MonadIO m) => + Bool -> String -> View view m CheckBoxes +setCheckBox checked' v= View $ do + n <- genNewId + st <- get + put st{needForm= HasElems} + me <- liftIO $ elemById n + checked <- case me of + Nothing -> return $ if checked' then "true" else "" + Just e -> liftIO $ getProp e "checked" + let strs= if checked=="true" then [v] else [] +-- let mn= if null strs then False else True + ret= Just $ CheckBoxes strs + + return $ FormElm + ( finput n "checkbox" v ( checked' ) Nothing) + ret + + +getCheckBoxes :: (Monad m, FormInput view) => View view m CheckBoxes -> View view m [String] +getCheckBoxes w= View $ do+ FormElm render mcb <- runView w+ return $ FormElm render $ case mcb of+ Just(CheckBoxes rs) -> Just rs+ _ -> Nothing + + + +whidden :: (MonadIO m, FormInput v,Read a, Show a, Typeable a) => a -> View v m a +whidden x= res where+ res= View $ do + n <- genNewId + let showx= case cast x of + Just x' -> x' + Nothing -> show x + r <- getParam1 n `asTypeOf` typef res + return . FormElm (finput n "hidden" showx False Nothing) $ valToMaybe r + where+ typef :: View v m a -> StateT MFlowState m (ParamResult v a)+ typef = undefined + + + + +getTextBox + :: (FormInput view, StateType (View view m) ~ MFlowState, + MonadIO m, + Typeable a, + Show a, + Read a) => + Maybe a -> View view m a +getTextBox ms = getParam Nothing "text" ms + + +getParam + :: (FormInput view,StateType (View view m) ~ MFlowState, + MonadIO m, + Typeable a, + Show a, + Read a) => + Maybe String -> String -> Maybe a -> View view m a +getParam look type1 mvalue= View $ getParamS look type1 mvalue + +getParamS look type1 mvalue= do + tolook <- case look of + Nothing -> genNewId + Just n -> return n + let nvalue x = case x of + Nothing -> "" + Just v -> + case cast v of + Just v' -> v' + Nothing -> show v + st <- get + + put st{needForm= HasElems} + r <- getParam1 tolook + case r of + Validated x -> return $ FormElm (finput tolook type1 (nvalue $ Just x) False Nothing) $ Just x + NotValidated s err -> return $ FormElm (finput tolook type1 s False Nothing <> err) $ Nothing + NoParam -> return $ FormElm (finput tolook type1 (nvalue mvalue) False Nothing) $ Nothing + + + + +-- | Display a multiline text box and return its content +getMultilineText :: (FormInput view + , MonadIO m) + => String + -> View view m String +getMultilineText nvalue = res where+ res= View $ do + tolook <- genNewId + r <- getParam1 tolook `asTypeOf` typef res + case r of + Validated x -> return $ FormElm (ftextarea tolook x) $ Just x + NotValidated s err -> return $ FormElm (ftextarea tolook s) Nothing + NoParam -> return $ FormElm (ftextarea tolook nvalue) Nothing + where+ typef :: View v m String -> StateT MFlowState m (ParamResult v a)+ typef = undefined++-- | A synonim of getMultilineText+textArea :: (FormInput view + , MonadIO m) + => String + -> View view m String +textArea= getMultilineText+ + +--getBool :: (FormInput view, +-- Monad m, Monad (View view m), Functor m) => +-- Bool -> String -> String -> View view m Bool +getBool mv truestr falsestr= do + r <- getSelect $ setOption truestr (fromStr truestr) <! (if mv then [("selected","true")] else []) + <|> setOption falsestr(fromStr falsestr) <! if not mv then [("selected","true")] else [] + if r == truestr then return True else return False + + + +-- | Display a dropdown box with the options in the first parameter is optionally selected +-- . It returns the selected option. +getSelect :: (FormInput view, + MonadIO m,Typeable a, Read a) => + View view m (MFOption a) -> View view m a +getSelect opts = res where+ res= View $ do + tolook <- genNewId + st <- get + put st{needForm= HasElems} + r <- getParam1 tolook `asTypeOf` typef res +-- setSessionData $ fmap MFOption $ valToMaybe r + FormElm form mr <- (runView opts) +-- + return $ FormElm (fselect tolook form) $ valToMaybe r+ + where+ typef :: View v m a -> StateT MFlowState m (ParamResult v a)+ typef = undefined+ +newtype MFOption a= MFOption a deriving Typeable + +instance (FormInput view,Monad m, Functor m) => Monoid (View view m (MFOption a)) where + mappend = (<|>) + mempty = Control.Applicative.empty + +-- | Set the option for getSelect. Options are concatenated with `<|>` +setOption + :: (Monad m, Monad (View view m), Show a, Eq a, Typeable a, FormInput view) => + a -> view -> View view m (MFOption a) +setOption n v = View $ do +-- mo <- getSessionData + runView $ setOption1 n v False + + +-- | Set the selected option for getSelect. Options are concatenated with `<|>` +setSelectedOption + :: (Monad m, Monad(View view m), Show a, Eq a, Typeable a, FormInput view) => + a -> view -> View view m (MFOption a) +setSelectedOption n v= View $ do +-- mo <- getSessionData + runView $ setOption1 n v True +-- Just Nothing -> setOption1 n v True +-- Just (Just o) -> setOption1 n v $ n == o + + +setOption1 :: (FormInput view, + Monad m, Typeable a, Eq a, Show a) => + a -> view -> Bool -> View view m (MFOption a) +setOption1 nam val check= View $ do + let n = if typeOf nam == typeOf(undefined :: String) + then unsafeCoerce nam + else show nam + + return . FormElm (foption n val check) . Just $ MFOption nam + + +wlabel + :: (Monad m, FormInput view) => view -> View view m a -> View view m a +wlabel str w =View $ do + id <- getNextId+ FormElm render mx <- runView w + return $ FormElm (ftag "label" str `attrs` [("for",id)] <> render) mx + + +resetButton :: (FormInput view, Monad m) => String -> View view m () +resetButton label= View $ return $ FormElm (finput "reset" "reset" label False Nothing) + $ Just () + +inputReset :: (FormInput view, Monad m) => String -> View view m () +inputReset= resetButton + +submitButton :: (StateType (View view m) ~ MFlowState,FormInput view, MonadIO m) => String -> View view m String +submitButton label= getParam Nothing "submit" $ Just label + +inputSubmit :: (StateType (View view m) ~ MFlowState,FormInput view, MonadIO m) => String -> View view m String +inputSubmit= submitButton +++linkPressed= unsafePerformIO $ newMVar Nothing++wlink :: (Show a, Typeable a) => a -> Perch -> Widget a +wlink x v= View $ do+ ide <- genNewId+ FormElm render _ <- runView $ (wraw $ addEvent(a ! href ("#/"++show1 x) $ v)+ OnClick (setId ide))+ -- `raiseEvent` OnClick++ mi <- liftIO $ readMVar linkPressed+ if mi== Just ide+ then return $ FormElm render $ Just x+ else return $ FormElm render Nothing + where+ addEvent be event action= Perch $ \e -> do + e' <- build be e + onEvent e' event action + return e' ++ setId ide _ _= do+ modifyMVar_ linkPressed . const . return $ Just ide+ show1 x | typeOf x== typeOf (undefined :: String) = unsafeCoerce x+ | otherwise= show x++ +-- | Concat a list of widgets of the same type, return a the first validated result +firstOf :: (FormInput view, Monad m, Functor m)=> [View view m a] -> View view m a +firstOf xs= Prelude.foldl (<|>) noWidget xs++-- | from a list of widgets, it return the validated ones. +manyOf :: (FormInput view, MonadIO m, Functor m)=> [View view m a] -> View view m [a] +manyOf xs= (View $ do + forms <- mapM runView xs + let vs = mconcat $ Prelude.map (\(FormElm v _) -> v) forms + res1= catMaybes $ Prelude.map (\(FormElm _ r) -> r) forms + return . FormElm vs $ Just res1) + +-- | like manyOf, but does not validate if one or more of the widgets does not validate +allOf xs= manyOf xs `validate` \rs -> + if length rs== length xs + then return Nothing + else return $ Just mempty + +-- | Enclose Widgets within some formating. +-- @view@ is intended to be instantiated to a particular format +-- +-- NOTE: It has a infix priority : @infixr 5@ less than the one of @++>@ and @<++@ of the operators, so use parentheses when appropriate, +-- unless the we want to enclose all the widgets in the right side. +-- Most of the type errors in the DSL are due to the low priority of this operator. +-- + +(<<<) :: (Monad m, Monoid view) + => (view ->view) + -> View view m a + -> View view m a +(<<<) v form= View $ do + FormElm f mx <- runView form + return $ FormElm (v f) mx + + +infixr 5 <<< + +-- | A parameter application with lower priority than ($) and direct function application +(<<) :: (t1 -> t) -> t1 -> t +(<<) tag content= tag content + +infixr 7 << + + +-- | Append formatting code to a widget +-- +-- @ getString "hi" <++ H1 << "hi there"@ +-- +-- It has a infix prority: @infixr 6@ higuer that '<<<' and most other operators +(<++) :: (Monad m, Monoid v) + => View v m a + -> v + -> View v m a +(<++) form v= View $ do + FormElm f mx <- runView form + return $ FormElm ( f <> v) mx + +infixr 6 ++> +infixr 6 <++ +-- | Prepend formatting code to a widget +-- +-- @bold << "enter name" ++> getString Nothing @ +-- +-- It has a infix prority: @infixr 6@ higuer that '<<<' and most other operators +(++>) :: (Monad m, Monoid view) + => view -> View view m a -> View view m a +html ++> w = -- (html <>) <<< digest + View $ do + FormElm f mx <- runView w + return $ FormElm (html <> f) mx + + + +-- | Add attributes to the topmost tag of a widget +-- +-- it has a fixity @infix 8@ +infixl 8 <! +widget <! attribs= View $ do + FormElm fs mx <- runView widget + return $ FormElm (fs `attrs` attribs) mx -- (head fs `attrs` attribs:tail fs) mx +-- case fs of +-- [hfs] -> return $ FormElm [hfs `attrs` attribs] mx +-- _ -> error $ "operator <! : malformed widget: "++ concatMap (unpack. toByteString) fs + + ++instance Attributable (Widget a) where + (!) widget atrib =View $ do + FormElm fs mx <- runView widget + return $ FormElm (fs `attr` atrib) mx+ + + +-- | Empty widget that does not validate. May be used as \"empty boxes\" inside larger widgets. +-- +-- It returns a non valid value. +noWidget :: (FormInput view, + Monad m, Functor m) => + View view m a +noWidget= Control.Applicative.empty + +-- | a sinonym of noWidget that can be used in a monadic expression in the View monad does not continue +stop :: (FormInput view, + Monad m, Functor m) => + View view m a +stop= Control.Applicative.empty + +-- | Render a Show-able value and return it +--wrender +-- :: (Monad m, Functor m, Show a,Monad (View view m), FormInput view) => +-- a -> View view m a +--wrender x = (fromStr $ show x) ++> return x + +-- | Render raw view formatting. It is useful for displaying information. +wraw :: Monad m => view -> View view m () +wraw x= View . return . FormElm x $ Just () ++-- | True if the widget has no valid input+isEmpty :: Widget a -> Widget Bool +isEmpty w= View $ do+ FormElm r mv <- runView w+ return $ FormElm r $ Just $ isNothing mv +++------------------------- +instance FormInput Perch where + fromStr = toElem + fromStrNoEncode = toElem + ftag n v = nelem n `child` v + + attrs tag [] = tag + attrs tag (nv:attribs) = attrs (attr tag nv) attribs + + inred msg= ftag "b" msg `attrs` [("style","color:red")] + + finput n t v f c= + let + tag= ftag "input" mempty `attrs` [("type", t), ("id", n), ("value", v)] + tag1= if f then tag `attrs` [("checked", "")] else tag + in case c of Just s -> tag1 `attrs` [("onclick", s)] ; _ -> tag1 + + ftextarea nam text= + ftag "textarea" mempty `attrs` [("id", nam)] `child` text + + + fselect nam list = ftag "select" mempty `attrs` [("id", nam)] `child` list + foption name v msel= + let tag= ftag "option" mempty `attrs` [("value", name)] `child` v + in if msel then tag `attrs` [("selected", "")] else tag + + + formAction action method1 form = ftag "form" mempty `attrs` [("acceptCharset", "UTF-8") + ,( "action", action) + ,("method", method1)] + `child` form + + + flink v str = ftag "a" mempty `attrs` [("href", v)] `child` str + +-- | Get the session data of the desired type if there is any. +getSessionData :: (StateType m ~ MFlowState,MonadState m,Typeable a) => m (Maybe a) +getSessionData = resp where + resp= gets mfData >>= \list -> + case M.lookup ( typeOf $ typeResp resp ) list of + Just x -> return . Just $ unsafeCoerce x + Nothing -> return $ Nothing + typeResp :: m (Maybe x) -> x + typeResp= undefined + +-- | getSessionData specialized for the View monad. if Nothing, the monadic computation +-- does not continue. getSData is a widget that does not validate when there is no data +-- of that type in the session. +getSData :: Typeable a =>Widget a +getSData= View $ do + r <- getSessionData + return $ FormElm mempty r + +--setSessionData :: (StateType m ~ MFlowState, Typeable a) => a -> m () +setSessionData x= + modify $ \st -> st{mfData= M.insert (typeOf x ) (unsafeCoerce x) (mfData st)} + +-- | a shorter name for setSessionData +setSData :: (StateType m ~ MFlowState, MonadState m,Typeable a) => a -> m () +setSData= setSessionData + +delSessionData x= + modify $ \st -> st{mfData= M.delete (typeOf x ) (mfData st)} + +delSData :: (StateType m ~ MFlowState, MonadState m,Typeable a) => a -> m () +delSData= delSessionData + +--------------------------- +data EvData = NoData | Click Int (Int, Int) | Mouse (Int, Int) | Key Int deriving (Show,Eq) +data EventData= EventData{ evName :: String, evData :: EvData} deriving Show + +eventData= unsafePerformIO . newMVar $ EventData "OnLoad" NoData ++resetEventData :: MonadIO m => m ()+resetEventData= liftIO . modifyMVar_ eventData . const . return $ EventData "Onload" NoData+ +getEventData :: MonadIO m => m EventData +getEventData= liftIO $ readMVar eventData ++-- triggers the event when it happens in the widget.+--+-- What happens then?+--+-- 1)The event reexecutes all the monadic sentence where the widget is, (with no re-rendering)+--+-- 2) with the result of this reevaluaution, executes the rest of the monadic computation+--+-- 3) update the DOM tree with the rendering of the reevaluation in 2).+--+-- As usual, If one step of the monadic computation return empty, the reevaluation finish+-- So the effect of an event can be restricted as much as you may need.+--+-- Neither the computation nor the tree in the upstream flow is touched.+-- (unless you use out of stream directives, like `at`)+--+-- monadic computations inside monadic computations are executed following recursively+-- the steps mentioned above. So an event in a component deep down could or could not+-- trigger the reexecution of the rest of the whole. +raiseEvent :: Widget a -> Event IO b ->Widget a +raiseEvent w event = View $ do + r <- gets process + case r of + EventF x f -> do + FormElm render mx <- runView w + let proc = x `addto` f >> return () + let nevent= evtName event :: String + let putevdata dat= modifyMVar_ eventData $ const $ return dat + let render' = case event of + OnLoad -> addEvent (render :: Perch) event $ putevdata (EventData nevent NoData) >> proc + OnUnload -> addEvent (render :: Perch) event $ putevdata (EventData nevent NoData) >> proc + OnChange -> addEvent (render :: Perch) event $ putevdata (EventData nevent NoData) >> proc + OnFocus -> addEvent (render :: Perch) event $ putevdata (EventData nevent NoData) >> proc + OnBlur -> addEvent (render :: Perch) event $ putevdata (EventData nevent NoData) >> proc + + OnMouseMove -> addEvent (render :: Perch) event $ \(x,y) -> do + putevdata $ EventData nevent $ Mouse(x,y) + proc + + OnMouseOver -> addEvent (render :: Perch) event $ \(x,y) -> do + putevdata $ EventData nevent $ Mouse(x,y) + proc + + OnMouseOut -> addEvent (render :: Perch) event proc + OnClick -> addEvent (render :: Perch) event $ \i (x,y) -> do + putevdata $ EventData nevent $ Click i (x,y) + proc + + OnDblClick -> addEvent (render :: Perch) event $ \i (x,y) -> do + putevdata $ EventData nevent $ Click i (x,y) + proc + + OnMouseDown -> addEvent (render :: Perch) event $ \i (x,y) -> do + putevdata $ EventData nevent $ Click i (x,y) + proc + + OnMouseUp -> addEvent (render :: Perch) event $ \i (x,y) -> do + putevdata $ EventData nevent $ Click i (x,y) + proc + + OnKeyPress -> addEvent (render :: Perch) event $ \i -> do + putevdata $ EventData nevent $ Key i + proc + + OnKeyUp -> addEvent (render :: Perch) event $ \i -> do + putevdata $ EventData nevent $ Key i + proc + + OnKeyDown -> addEvent (render :: Perch) event $ \i -> do + putevdata $ EventData nevent $ Key i + proc + + + return $ FormElm render' mx + where + addto f f'= do + mr <- f + case mr of + Nothing -> return Nothing + Just x' -> f' x' + +-- A shorter synonym for `raiseEvent` +fire :: Widget a -> Event IO b ->Widget a +fire = raiseEvent++-- A shorter and smoother synonym for `raiseEvent` +wake :: Widget a -> Event IO b -> Widget a +wake = raiseEvent++-- A professional synonym for `raiseEvent`+react :: Widget a -> Event IO b -> Widget a+react = raiseEvent++-- | pass trough only if the event is fired in this DOM element.+-- Otherwise, if the code is executing from a previous event, the computation will stop+pass :: Perch -> Event IO b -> Widget EventData+pass v event= do+ resetEventData+ wraw v `wake` event+ e@(EventData typ _) <- getEventData+ continueIf (evtName event== typ) e++-- | return empty and the monadic computation stop if the condition is false.+-- If true, return the second parameter.+continueIf :: Bool -> a -> Widget a+continueIf True x = return x+continueIf False _ = empty+ +-- | executes a widget each t milliseconds until it validates and return () +wtimeout :: Int -> Widget () -> Widget () +wtimeout t w= View $ do + id <- genNewId + let f= setTimeout t $ do + me <- elemById id + case me of + Nothing -> return () + Just e ->do + r <- clearChildren e >> runWidget w e + case r of + Nothing -> f + Just () -> return () + + liftIO f + runView $ identified id w + + +globalState= unsafePerformIO $ newMVar mFlowState0 + +-- run the widget as the content of a DOM element, the id is passed as parameter. All the+-- content of the element is erased previously +runWidgetId :: Widget b -> ElemID -> IO (Maybe b) +runWidgetId ac id = do + + withElem id $ \e -> do + clearChildren e + runWidget ac e + + +-- run the widget as the content of a DOM element +runWidget :: Widget b -> Elem -> IO (Maybe b) +runWidget action e = do + st <- takeMVar globalState + (FormElm render mx, s) <- runStateT (runView action') st+ case fixed st of+ False -> build render e+ True -> build (this `goParent` render) e + return mx + where + action' = action <** -- force the execution of the code below, even if action fails + (View $ do + st <- get + liftIO $ putMVar globalState st{fixed= False} + return $ FormElm mempty Nothing) ++-- add a header content+addHeader :: Perch -> IO ()+addHeader format= do+ head <- getHead+ build format head+ return ()+ where+ getHead :: IO Elem+ getHead= ffi $ toJSStr "(function(){return document.head;})"++-- | run the widget as the body of the HTML+runBody :: Widget a -> IO (Maybe a)+runBody w= do+ body <- getBody+ (flip runWidget) body w+ where+ getBody :: IO Elem+ getBody= ffi $ toJSStr "(function(){return document.body;})"++data UpdateMethod= Append | Prepend | Insert deriving Show + ++at :: ElemID -> UpdateMethod -> Widget a -> Widget a +at id method w= View $ do + FormElm render mx <- (runView w)+ return $ FormElm (set render) mx+ where+ set render= liftIO $ do+ me <- elemById id+ case me of+ Nothing -> return ()+ Just e -> case method of+ Insert -> do+ clearChildren e+ build render e+ return ()+ Append -> do+ build render e+ return ()+ Prepend -> do+ es <- getChildren e+ case es of+ [] -> build render e >> return ()+ e':es -> do+ span <- newElem "span"+ addChildBefore span e e'+ build render span+ return()+ +
+ src/Main.hs view
@@ -0,0 +1,363 @@+{-# LANGUAGE DeriveDataTypeable #-}+module Main where+import Haste+import Haste.DOM(withElem)+import Haste.Foreign+import Haste.Prim+import Haste.Graphics.Canvas+import Haste.HPlay.View+import Haste.HPlay.Cell as Cell+import Haste.HPlay.Console+import Control.Applicative+import Control.Monad.State+import Control.Monad+import Data.Monoid+import Data.Typeable+import Prelude hiding (div,all,id,print,getChar, putStr, putStrLn,getLine)+import qualified Data.Map as V+import Data.Maybe+import Data.List(isInfixOf)+++main= runBody $ do -- PerchM monad+ h1 ! style "text-align:center" $ "hplayground examples"+ h3 $ center $ do+ a ! href "https://github.com/agocorona/hplayground" $ "Git repository"+ toElem " "+ a ! href "https://github.com/agocorona/hplayground/blob/master/src/Main.hs" $ "Examples code"+ toElem " "+ a ! href "haskell-web.blogspot.com.es/2014/07/hplayground-translate-your-console.html" $ "Article"+ ++> do -- Widget monad+ (table ! style "border-collapse:collapse"+ <<<(tr ! style "vertical-align:top"+ <<< ( tds <<< sumTwo+ <|> tds <<< sumfold 3+ <|> tds <<< sumRecursive)+ <|> tr ! style "vertical-align:top"+ <<< (tds <<< (counter 3 <|> buttons <|> linksample)+ <|> tds <<< sumCell+ <|> tds <<< showpascal 4)+ <|> tr ! style "vertical-align:top"+ <<< (tds <<< formWidget+ <|> tds <<< palindrome+ <|> tds <<< naiveTodo)+ <|> tr ! style "vertical-align:top"+ <<< (tds <<< drawcanvas+ <|> tds <<< gallery+ <|> tds <<< mouse )++ ))++ <++ b << "bottom of the page"+ where+ tds= td ! style "padding:15px;border-style:dotted"++-- Don't be scared by the operators:+-- <|> is the Alternantive combinator, to combine Widget() entries+-- and the <<< combinator simply encloses a widget within a HTML tag.+-- ++> prepend HTML to a widget+-- <++ postpend it++++sumTwo :: Widget ()+sumTwo = p "This widget sum two numbers and append the result. Using applicative and monadic expressions" ++>+ (p <<< do+ r <- (+) <$> fromStr "first number" ++> br+ ++> inputInt Nothing `fire` OnKeyUp <++ br+ <*> fromStr "second number " ++> br+ ++> inputInt Nothing `fire` OnKeyUp <++ br+ p <<< fromStr "result: " ++> b (show r) ++> return())++ where+ less3 x= if x < 3 then return Nothing else return . Just $ b " no more than 2 please"++sumRecursive :: Widget ()+sumRecursive = p "This widget sum recursively n numbers. When enters 0, present the result" ++> sumr 0+ where+ sumr r=do+ r' <- inputInt Nothing `fire` OnKeyUp+ if r'== 0+ then br ++> fromStr "result: " ++> b (show r) ++> noWidget+ else do+ b (show $ r+r') ++> br ++> return ()+ sumr (r+r')++sumfold :: Int -> Widget ()+sumfold n = p ("This widget sum "++ show n ++" numbers and append the result using a fold") ++>+ (p <<< do+ r <- foldl (<>) (return 0) . take n $ repeat $ inputInt Nothing `fire` OnKeyUp <++ br+ br ++> fromStr "result: " ++> b (show r) ++> return ())++instance Monoid Int where+ mappend= (+)+ mempty= 0++++newtype Counter= Counter Int deriving Typeable++counter n = p "Two counters. One is pure and recursive, the other is stateful"+ ++> br ++> (center <<< (counter1 n <|> counter2 n))++ where+ -- a "pure" counter+ counter1 :: Int -> Widget ()+ counter1 n= (b (show n) ++> onemore) `wcallback` (const $ counter1 $ n +1)++ onemore= submitButton "+" `fire` OnClick+++ -- a stateful counter+ counter2 n = do+ onemore -- isEmpty (getSData :: Widget Counter ) <|> (onemore >> return True)+ Counter n <- getSData <|> return (Counter n)+ wraw $ b (show n)+ setSessionData . Counter $ n +1++++sumCell :: Widget ()++sumCell = p "This widget sum recursively n numbers, but remember the\+ \ previos entries when one entry is edited" ++> sumr 0 0++ where+ sumr i r=do+ r' <- cell i+ b (show $ r+r') ++> br ++> return ()+ sumr (i +1) (r+r')++ cell i= do+ stored <- Just <$> getNumber i <|> return Nothing+ r' <- inputInt stored `fire` OnKeyUp <|> fromM stored+ addNumber i r'+ return r'+ where+ addNumber i x= do+ xs <- getSData <|> return V.empty+ setSData $ V.insert i x xs++ getNumber :: Int -> Widget Int+ getNumber i= do+ xs <- getSData+ case V.lookup i xs of+ Nothing -> empty+ Just x -> return x++ fromM Nothing = empty+ fromM (Just x) = return x++++-- pascal triangle http://www.haskell.org/haskellwiki/Blow_your_mind++pascal = iterate (\row -> zipWith (+) ([0] ++ row) (row ++ [0])) [1] :: [[Int]]++showpascal n= p << ("Show " ++ show n ++ " rows of the Pascal triangle ")+ ++> mconcat[p ! style "text-align:center" $ row | row <- take n pascal]+ ++> empty -- the applicative empty === noWidget+++++drawcanvas :: Widget ()+drawcanvas=+ p << "This example draw a function of x between 10 and -10. You can define the function\+ \ using javascript expressions" ++>++ (center <<< do+ let initial= "x*x+x+10;"+ sanitize str= if isInfixOf "alert" str then initial else str+ expr <- inputString (Just initial) `fire` OnKeyUp <++ br <|> return initial+ wraw $ canvas ! id "canvas" $ noHtml+ wraw $ draw $sanitize expr)+++ where++ evalFormula :: String -> IO Double+ evalFormula= ffi $ toJSString "(function(exp){ return eval(exp);})"++ draw expr= liftIO $ do+ Just can <- getCanvasById "canvas"+ let range= [-10..10]+ exprs = Prelude.map (\v -> subst 'x' (show v) expr) range+ ps <- mapM evalFormula exprs+ render can $ scale (3,1) $ translate (50,130) $ rotate pi $ stroke $do+ line (-10,0) (10,0)+ line (0,30) (0,-30)+ path $ zip range ps++ subst _ _ []= []+ subst c v (c':cs)+ | c==c' = v++ subst c v cs+ | otherwise= c':subst c v cs++++newtype GalleryIndex= G Int deriving Typeable++gallery :: Widget ()+gallery = p "this example show a image gallery. It advances each 20 seconds and by\+ \ pressing the button" ++>+ (wtimeout 20000 $ do+ G i <- getSData <|> return (G 0)+ let i' = if i == length gall-1 then 0 else i+1+ setSData $ G i'+ wraw $ do+ img ! src (gall !! i) ! width "100%" ! height "100%" -- raw Perch code+ br+ submitButton ">" `fire` OnClick+ `wcallback` \_ -> gallery)++ where+ gall=["http://almaer.com/blog/uploads/interview-haskell.png"+ ,"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQmmC4kV3NPFIpGL_x4H_iHG_p-c93DGjWfkxVtjxEFVng7A8o-nw"+ ,"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ_ywj-zxDq3h_B4l48XHsjTywrdbK5egxvhxkYJ1HOkDFXd_-H"+ ,"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcS53axpzkDyzEUAdaIP3YsaHuR-_YqN9qFK3W4bp_D2OBZfW5BU_Q"+ ,"https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSfP70npv4FOrkBjScP0tVu2t3veSNoFQ6MMxX6LDO8kldNeu-DxQ"+ ,"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRAgKkpDyzk8kdIqk5ECsZ14XgbpBzyWFvrCrHombkSBAUn6jFo"+ ]+++mouse :: Widget ()+mouse= do+ wraw (div ! style "height:100px;background-color:lightgreen;position:relative" $ h1 "Mouse events here")+ `fire` OnMouseOut+ `fire` OnMouseOver+ `fire` OnMouseDown+ `fire` OnMouseMove+ `fire` OnMouseUp+ `fire` OnClick+ `fire` OnDblClick+ `fire` OnKeyPress+ `fire` OnKeyDown+ `fire` OnKeyUp+ evdata <- getEventData+ wraw $ p << ( (evName evdata) ++" "++ show (evData evdata))++linksample= br ++> wlink "Hey!" (toElem "This link say Hey!")`fire` OnClick >>= \r -> wraw( b (" returns "++ r))++buttons= p "Different input elements:" ++> checkButton+ **> br ++> br+ ++> radio+ **> br ++> br+ ++> select+ <++ br+ where+ checkButton=do+ rs <- getCheckBoxes(+ ((setCheckBox False "Red" <++ b "red") `fire` OnClick)+ <> ((setCheckBox False "Green" <++ b "green") `fire` OnClick)+ <> ((setCheckBox False "blue" <++ b "blue") `fire` OnClick))+ wraw $ fromStr " returns: " <> b (show rs)++ radio= do+ r <- getRadio [\n -> fromStr v ++> setRadioActive v n | v <- ["red","green","blue"]]++ wraw $ fromStr " returns: " <> b ( show r )++ select= do+ r <- getSelect ( setOption "red" (fromStr "red") + <|> setOption "green" (fromStr "green")+ <|> setOption "blue" (fromStr "blue"))+ `fire` OnClick++ wraw $ fromStr " returns: " <> b ( show r )++formWidget= center <<< do -- PerchM monad+ p "Fields of a form appear in sequence. \+ \Some of the fields trigger events instantly. Some others use a button to trigger them. \+ \It also contains option buttons, radio buttons etc"+ p $ do+ toElem "This formulary is the same than the one "+ a ! href "http://mflowdemo.herokuapp.com/noscript/monadicwidgets/combination"+ $ "run in the server by MFlow"+ ++>+ do+ (n,s) <- (,) <$> p << "Who are you? "+ ++> getString Nothing <! hint "name" <++ br+ <*> getString Nothing <! hint "surname" <++ br+ <** submitButton "ok" `fire` OnClick <++ br++ flag <- b << "Do you " ++> getRadio[radiob "work?",radiob "study?"] <++ br++ r<- case flag of+ "work?" -> Left <$> b << "do you enjoy your work? "+ ++> getBool True "yes" "no"+ <** submitButton "ok" `fire` OnClick <++ br++ "study?"-> Right <$> b << "do you study in "+ ++> getRadio[radiob "University"+ ,radiob "High School"]++ p << ("You are "++n++" "++s)++ ++> case r of+ Left fl -> p << ("You work and it is " ++ show fl ++ " that you enjoy your work")+ ++> noWidget++ Right stu -> p << ("You study at the " ++ stu)+ ++> noWidget++ where+ hint s= [("placeholder",s)]+ radiob s n= wlabel (fromStr s) $ setRadioActive s n+++palindrome= p << "To search palindromes: one box present the other's reversed. It is also\+ \ an example of cell usage" ++> do+ let entry= boxCell "entry" :: Cell String+ revEntry= boxCell "revEntry"++ r <- center <<< ((mk entry Nothing `fire` OnKeyUp >>= return . Left) <++ br <|>+ (mk revEntry Nothing `fire` OnKeyUp >>= return . Right))++ case r of+ Left s -> do+ r <- Cell.get entry >>= return . reverse+ revEntry .= r+ Right s -> do+ r' <- Cell.get revEntry >>= return . reverse+ entry .= r'+++newtype Tasks = Tasks [String] deriving Typeable++data TaskAction = Done | Destroy++naiveTodo= do+ p $ do -- PerchM monad+ toElem "Work in progress for a todo application to be added to "+ a ! href "http://todomvc.com" $ "todomvc.com"+ ++> todos++ where++ todos= center <<< h1 "todos" ++>+ do+ let entry = boxCell "todo"+ task <- mk entry Nothing `fire` OnKeyUp+ EventData _ (Key k) <- getEventData+ when( k == 13) $ do+ entry .= ""+ Tasks tasks <- getSData <|> return (Tasks [])+ setSData . Tasks $ task:tasks++ at "list" Insert $ foldl (<|>) mempty [ display t | t <- (task:tasks)]+ return ()+ <|>+ wraw (div ! id "list" $ noHtml)++++ display task= li <<< (do+ ch <- getCheckBoxes $ setCheckBox False "check" `fire` OnClick+ case ch of+ ["check"] -> wraw $ b ! style "text-decoration:line-through;" $ task+ _ -> wraw $ b task++ )++
+ src/Main.html view
@@ -0,0 +1,2139 @@+<!DOCTYPE HTML><html><head><title>main.html</title><meta charset="UTF-8"><script type="text/javascript">// This object will hold all exports. +var Haste = {}; + +/* Thunk + Creates a thunk representing the given closure. + Since we want automatic memoization of as many expressions as possible, we + use a JS object as a sort of tagged pointer, where the member x denotes the + object actually pointed to. If a "pointer" points to a thunk, it has a + member 't' which is set to true; if it points to a value, be it a function, + a value of an algebraic type of a primitive value, it has no member 't'. +*/ + +function T(f) { + this.f = new F(f); +} + +function F(f) { + this.f = f; +} + +/* Apply + Applies the function f to the arguments args. If the application is under- + saturated, a closure is returned, awaiting further arguments. If it is over- + saturated, the function is fully applied, and the result (assumed to be a + function) is then applied to the remaining arguments. +*/ +function A(f, args) { + if(f instanceof T) { + f = E(f); + } + // Closure does some funny stuff with functions that occasionally + // results in non-functions getting applied, so we have to deal with + // it. + if(!(f instanceof Function)) { + return f; + } + + if(f.arity === undefined) { + f.arity = f.length; + } + if(args.length === f.arity) { + switch(f.arity) { + case 0: return f(); + case 1: return f(args[0]); + default: return f.apply(null, args); + } + } else if(args.length > f.arity) { + switch(f.arity) { + case 0: return f(); + case 1: return A(f(args.shift()), args); + default: return A(f.apply(null, args.splice(0, f.arity)), args); + } + } else { + var g = function() { + return A(f, args.concat(Array.prototype.slice.call(arguments))); + }; + g.arity = f.arity - args.length; + return g; + } +} + +/* Eval + Evaluate the given thunk t into head normal form. + If the "thunk" we get isn't actually a thunk, just return it. +*/ +function E(t) { + if(t instanceof T) { + if(t.f instanceof F) { + return t.f = t.f.f(); + } else { + return t.f; + } + } else { + return t; + } +} + +// Export Haste, A and E. Haste because we need to preserve exports, A and E +// because they're handy for Haste.Foreign. +if(!window) { + var window = {}; +} +window['Haste'] = Haste; +window['A'] = A; +window['E'] = E; + + +/* Throw an error. + We need to be able to use throw as an exception so we wrap it in a function. +*/ +function die(err) { + throw err; +} + +function quot(a, b) { + return (a-a%b)/b; +} + +function quotRemI(a, b) { + return [0, (a-a%b)/b, a%b]; +} + +// 32 bit integer multiplication, with correct overflow behavior +// note that |0 or >>>0 needs to be applied to the result, for int and word +// respectively. +function imul(a, b) { + // ignore high a * high a as the result will always be truncated + var lows = (a & 0xffff) * (b & 0xffff); // low a * low b + var aB = (a & 0xffff) * (b & 0xffff0000); // low a * high b + var bA = (a & 0xffff0000) * (b & 0xffff); // low b * high a + return lows + aB + bA; // sum will not exceed 52 bits, so it's safe +} + +function addC(a, b) { + var x = a+b; + return [0, x & 0xffffffff, x > 0x7fffffff]; +} + +function subC(a, b) { + var x = a-b; + return [0, x & 0xffffffff, x < -2147483648]; +} + +function sinh (arg) { + return (Math.exp(arg) - Math.exp(-arg)) / 2; +} + +function tanh (arg) { + return (Math.exp(arg) - Math.exp(-arg)) / (Math.exp(arg) + Math.exp(-arg)); +} + +function cosh (arg) { + return (Math.exp(arg) + Math.exp(-arg)) / 2; +} + +// Scratch space for byte arrays. +var rts_scratchBuf = new ArrayBuffer(8); +var rts_scratchW32 = new Uint32Array(rts_scratchBuf); +var rts_scratchFloat = new Float32Array(rts_scratchBuf); +var rts_scratchDouble = new Float64Array(rts_scratchBuf); + +function decodeFloat(x) { + rts_scratchFloat[0] = x; + var sign = x < 0 ? -1 : 1; + var exp = ((rts_scratchW32[0] >> 23) & 0xff) - 150; + var man = rts_scratchW32[0] & 0x7fffff; + if(exp === 0) { + ++exp; + } else { + man |= (1 << 23); + } + return [0, sign*man, exp]; +} + +function decodeDouble(x) { + rts_scratchDouble[0] = x; + var sign = x < 0 ? -1 : 1; + var manHigh = rts_scratchW32[1] & 0xfffff; + var manLow = rts_scratchW32[0]; + var exp = ((rts_scratchW32[1] >> 20) & 0x7ff) - 1075; + if(exp === 0) { + ++exp; + } else { + manHigh |= (1 << 20); + } + return [0, sign, manHigh, manLow, exp]; +} + +function isFloatFinite(x) { + return isFinite(x); +} + +function isDoubleFinite(x) { + return isFinite(x); +} + +function err(str) { + die(toJSStr(str)); +} + +/* unpackCString# + NOTE: update constructor tags if the code generator starts munging them. +*/ +function unCStr(str) {return unAppCStr(str, [0]);} + +function unFoldrCStr(str, f, z) { + var acc = z; + for(var i = str.length-1; i >= 0; --i) { + acc = A(f, [[0, str.charCodeAt(i)], acc]); + } + return acc; +} + +function unAppCStr(str, chrs) { + var i = arguments[2] ? arguments[2] : 0; + if(i >= str.length) { + return E(chrs); + } else { + return [1,[0,str.charCodeAt(i)],new T(function() { + return unAppCStr(str,chrs,i+1); + })]; + } +} + +function charCodeAt(str, i) {return str.charCodeAt(i);} + +function fromJSStr(str) { + return unCStr(E(str)); +} + +function toJSStr(hsstr) { + var s = ''; + for(var str = E(hsstr); str[0] == 1; str = E(str[2])) { + s += String.fromCharCode(E(str[1])[1]); + } + return s; +} + +// newMutVar +function nMV(val) { + return ({x: val}); +} + +// readMutVar +function rMV(mv) { + return mv.x; +} + +// writeMutVar +function wMV(mv, val) { + mv.x = val; +} + +// atomicModifyMutVar +function mMV(mv, f) { + var x = A(f, [mv.x]); + mv.x = x[1]; + return x[2]; +} + +function localeEncoding() { + var le = newByteArr(5); + le['b']['i8'] = 'U'.charCodeAt(0); + le['b']['i8'] = 'T'.charCodeAt(0); + le['b']['i8'] = 'F'.charCodeAt(0); + le['b']['i8'] = '-'.charCodeAt(0); + le['b']['i8'] = '8'.charCodeAt(0); + return le; +} + +var isDoubleNaN = isNaN; +var isFloatNaN = isNaN; + +function isDoubleInfinite(d) { + return (d === Infinity); +} +var isFloatInfinite = isDoubleInfinite; + +function isDoubleNegativeZero(x) { + return (x===0 && (1/x)===-Infinity); +} +var isFloatNegativeZero = isDoubleNegativeZero; + +function strEq(a, b) { + return a == b; +} + +function strOrd(a, b) { + if(a < b) { + return [0]; + } else if(a == b) { + return [1]; + } + return [2]; +} + +function jsCatch(act, handler) { + try { + return A(act,[0]); + } catch(e) { + return A(handler,[e, 0]); + } +} + +var coercionToken = undefined; + +/* Haste represents constructors internally using 1 for the first constructor, + 2 for the second, etc. + However, dataToTag should use 0, 1, 2, etc. Also, booleans might be unboxed. + */ +function dataToTag(x) { + if(x instanceof Array) { + return x[0]; + } else { + return x; + } +} + +function __word_encodeDouble(d, e) { + return d * Math.pow(2,e); +} + +var __word_encodeFloat = __word_encodeDouble; +var jsRound = Math.round; // Stupid GHC doesn't like periods in FFI IDs... +var realWorld = undefined; +if(typeof _ == 'undefined') { + var _ = undefined; +} + +function popCnt(i) { + i = i - ((i >> 1) & 0x55555555); + i = (i & 0x33333333) + ((i >> 2) & 0x33333333); + return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24; +} + +function jsAlert(val) { + if(typeof alert != 'undefined') { + alert(val); + } else { + print(val); + } +} + +function jsLog(val) { + console.log(val); +} + +function jsPrompt(str) { + var val; + if(typeof prompt != 'undefined') { + val = prompt(str); + } else { + print(str); + val = readline(); + } + return val == undefined ? '' : val.toString(); +} + +function jsEval(str) { + var x = eval(str); + return x == undefined ? '' : x.toString(); +} + +function isNull(obj) { + return obj === null; +} + +function jsRead(str) { + return Number(str); +} + +function jsShowI(val) {return val.toString();} +function jsShow(val) { + var ret = val.toString(); + return val == Math.round(val) ? ret + '.0' : ret; +} + +function jsGetMouseCoords(e) { + var posx = 0; + var posy = 0; + if (!e) var e = window.event; + if (e.pageX || e.pageY) { + posx = e.pageX; + posy = e.pageY; + } + else if (e.clientX || e.clientY) { + posx = e.clientX + document.body.scrollLeft + + document.documentElement.scrollLeft; + posy = e.clientY + document.body.scrollTop + + document.documentElement.scrollTop; + } + return [posx - (e.target.offsetLeft || 0), + posy - (e.target.offsetTop || 0)]; +} + +function jsSetCB(elem, evt, cb) { + // Count return press in single line text box as a change event. + if(evt == 'change' && elem.type.toLowerCase() == 'text') { + setCB(elem, 'keyup', function(k) { + if(k == '\n'.charCodeAt(0)) { + A(cb,[[0,k.keyCode],0]); + } + }); + } + + var fun; + switch(evt) { + case 'click': + case 'dblclick': + case 'mouseup': + case 'mousedown': + fun = function(x) { + var mpos = jsGetMouseCoords(x); + var mx = [0,mpos[0]]; + var my = [0,mpos[1]]; + A(cb,[[0,x.button],[0,mx,my],0]); + }; + break; + case 'mousemove': + case 'mouseover': + fun = function(x) { + var mpos = jsGetMouseCoords(x); + var mx = [0,mpos[0]]; + var my = [0,mpos[1]]; + A(cb,[[0,mx,my],0]); + }; + break; + case 'keypress': + case 'keyup': + case 'keydown': + fun = function(x) {A(cb,[[0,x.keyCode],0]);}; + break; + default: + fun = function() {A(cb,[0]);}; + break; + } + return setCB(elem, evt, fun); +} + +function setCB(elem, evt, cb) { + if(elem.addEventListener) { + elem.addEventListener(evt, cb, false); + return true; + } else if(elem.attachEvent) { + elem.attachEvent('on'+evt, cb); + return true; + } + return false; +} + +function jsSetTimeout(msecs, cb) { + window.setTimeout(function() {A(cb,[0]);}, msecs); +} + +function jsGet(elem, prop) { + return elem[prop].toString(); +} + +function jsSet(elem, prop, val) { + elem[prop] = val; +} + +function jsGetAttr(elem, prop) { + if(elem.hasAttribute(prop)) { + return elem.getAttribute(prop).toString(); + } else { + return ""; + } +} + +function jsSetAttr(elem, prop, val) { + elem.setAttribute(prop, val); +} + +function jsGetStyle(elem, prop) { + return elem.style[prop].toString(); +} + +function jsSetStyle(elem, prop, val) { + elem.style[prop] = val; +} + +function jsKillChild(child, parent) { + parent.removeChild(child); +} + +function jsClearChildren(elem) { + while(elem.hasChildNodes()){ + elem.removeChild(elem.lastChild); + } +} + +function jsFind(elem) { + var e = document.getElementById(elem) + if(e) { + return [1,[0,e]]; + } + return [0]; +} + +function jsCreateElem(tag) { + return document.createElement(tag); +} + +function jsCreateTextNode(str) { + return document.createTextNode(str); +} + +function jsGetChildBefore(elem) { + elem = elem.previousSibling; + while(elem) { + if(typeof elem.tagName != 'undefined') { + return [1,[0,elem]]; + } + elem = elem.previousSibling; + } + return [0]; +} + +function jsGetLastChild(elem) { + var len = elem.childNodes.length; + for(var i = len-1; i >= 0; --i) { + if(typeof elem.childNodes[i].tagName != 'undefined') { + return [1,[0,elem.childNodes[i]]]; + } + } + return [0]; +} + + +function jsGetFirstChild(elem) { + var len = elem.childNodes.length; + for(var i = 0; i < len; i++) { + if(typeof elem.childNodes[i].tagName != 'undefined') { + return [1,[0,elem.childNodes[i]]]; + } + } + return [0]; +} + + +function jsGetChildren(elem) { + var children = [0]; + var len = elem.childNodes.length; + for(var i = len-1; i >= 0; --i) { + if(typeof elem.childNodes[i].tagName != 'undefined') { + children = [1, [0,elem.childNodes[i]], children]; + } + } + return children; +} + +function jsSetChildren(elem, children) { + children = E(children); + jsClearChildren(elem, 0); + while(children[0] === 1) { + elem.appendChild(E(E(children[1])[1])); + children = E(children[2]); + } +} + +function jsAppendChild(child, container) { + container.appendChild(child); +} + +function jsAddChildBefore(child, container, after) { + container.insertBefore(child, after); +} + +var jsRand = Math.random; + +// Concatenate a Haskell list of JS strings +function jsCat(strs, sep) { + var arr = []; + strs = E(strs); + while(strs[0]) { + strs = E(strs); + arr.push(E(strs[1])[1]); + strs = E(strs[2]); + } + return arr.join(sep); +} + +var jsJSONParse = JSON.parse; + +// JSON stringify a string +function jsStringify(str) { + return JSON.stringify(str); +} + +// Parse a JSON message into a Haste.JSON.JSON value. +// As this pokes around inside Haskell values, it'll need to be updated if: +// * Haste.JSON.JSON changes; +// * E() starts to choke on non-thunks; +// * data constructor code generation changes; or +// * Just and Nothing change tags. +function jsParseJSON(str) { + try { + var js = JSON.parse(str); + var hs = toHS(js); + } catch(_) { + return [0]; + } + return [1,hs]; +} + +function toHS(obj) { + switch(typeof obj) { + case 'number': + return [0, [0, jsRead(obj)]]; + case 'string': + return [1, [0, obj]]; + break; + case 'boolean': + return [2, obj]; // Booleans are special wrt constructor tags! + break; + case 'object': + if(obj instanceof Array) { + return [3, arr2lst_json(obj, 0)]; + } else { + // Object type but not array - it's a dictionary. + // The RFC doesn't say anything about the ordering of keys, but + // considering that lots of people rely on keys being "in order" as + // defined by "the same way someone put them in at the other end," + // it's probably a good idea to put some cycles into meeting their + // misguided expectations. + var ks = []; + for(var k in obj) { + ks.unshift(k); + } + var xs = [0]; + for(var i = 0; i < ks.length; i++) { + xs = [1, [0, [0,ks[i]], toHS(obj[ks[i]])], xs]; + } + return [4, xs]; + } + } +} + +function arr2lst_json(arr, elem) { + if(elem >= arr.length) { + return [0]; + } + return [1, toHS(arr[elem]), new T(function() {return arr2lst_json(arr,elem+1);})] +} + +function arr2lst(arr, elem) { + if(elem >= arr.length) { + return [0]; + } + return [1, arr[elem], new T(function() {return arr2lst(arr,elem+1);})] +} + +function lst2arr(xs) { + var arr = []; + for(; xs[0]; xs = E(xs[2])) { + arr.push(E(xs[1])); + } + return arr; +} + +function ajaxReq(method, url, async, postdata, cb) { + var xhr = new XMLHttpRequest(); + xhr.open(method, url, async); + xhr.setRequestHeader('Cache-control', 'no-cache'); + xhr.onreadystatechange = function() { + if(xhr.readyState == 4) { + if(xhr.status == 200) { + A(cb,[[1,[0,xhr.responseText]],0]); + } else { + A(cb,[[0],0]); // Nothing + } + } + } + xhr.send(postdata); +} + +// Create a little endian ArrayBuffer representation of something. +function toABHost(v, n, x) { + var a = new ArrayBuffer(n); + new window[v](a)[0] = x; + return a; +} + +function toABSwap(v, n, x) { + var a = new ArrayBuffer(n); + new window[v](a)[0] = x; + var bs = new Uint8Array(a); + for(var i = 0, j = n-1; i < j; ++i, --j) { + var tmp = bs[i]; + bs[i] = bs[j]; + bs[j] = tmp; + } + return a; +} + +window['toABle'] = toABHost; +window['toABbe'] = toABSwap; + +// Swap byte order if host is not little endian. +var buffer = new ArrayBuffer(2); +new DataView(buffer).setInt16(0, 256, true); +if(new Int16Array(buffer)[0] !== 256) { + window['toABle'] = toABSwap; + window['toABbe'] = toABHost; +} + +// MVar implementation. +// Since Haste isn't concurrent, takeMVar and putMVar don't block on empty +// and full MVars respectively, but terminate the program since they would +// otherwise be blocking forever. + +function newMVar() { + return ({empty: true}); +} + +function tryTakeMVar(mv) { + if(mv.empty) { + return [0, 0, undefined]; + } else { + var val = mv.x; + mv.empty = true; + mv.x = null; + return [0, 1, val]; + } +} + +function takeMVar(mv) { + if(mv.empty) { + // TODO: real BlockedOnDeadMVar exception, perhaps? + err("Attempted to take empty MVar!"); + } + var val = mv.x; + mv.empty = true; + mv.x = null; + return val; +} + +function putMVar(mv, val) { + if(!mv.empty) { + // TODO: real BlockedOnDeadMVar exception, perhaps? + err("Attempted to put full MVar!"); + } + mv.empty = false; + mv.x = val; +} + +function tryPutMVar(mv, val) { + if(!mv.empty) { + return 0; + } else { + mv.empty = false; + mv.x = val; + return 1; + } +} + +function sameMVar(a, b) { + return (a == b); +} + +function isEmptyMVar(mv) { + return mv.empty ? 1 : 0; +} + +// Implementation of stable names. +// Unlike native GHC, the garbage collector isn't going to move data around +// in a way that we can detect, so each object could serve as its own stable +// name if it weren't for the fact we can't turn a JS reference into an +// integer. +// So instead, each object has a unique integer attached to it, which serves +// as its stable name. + +var __next_stable_name = 1; + +function makeStableName(x) { + if(!x.stableName) { + x.stableName = __next_stable_name; + __next_stable_name += 1; + } + return x.stableName; +} + +function eqStableName(x, y) { + return (x == y) ? 1 : 0; +} + +var Integer = function(bits, sign) { + this.bits_ = []; + this.sign_ = sign; + + var top = true; + for (var i = bits.length - 1; i >= 0; i--) { + var val = bits[i] | 0; + if (!top || val != sign) { + this.bits_[i] = val; + top = false; + } + } +}; + +Integer.IntCache_ = {}; + +var I_fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = Integer.IntCache_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new Integer([value | 0], value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + Integer.IntCache_[value] = obj; + } + return obj; +}; + +var I_fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return Integer.ZERO; + } else if (value < 0) { + return I_negate(I_fromNumber(-value)); + } else { + var bits = []; + var pow = 1; + for (var i = 0; value >= pow; i++) { + bits[i] = (value / pow) | 0; + pow *= Integer.TWO_PWR_32_DBL_; + } + return new Integer(bits, 0); + } +}; + +var I_fromBits = function(bits) { + var high = bits[bits.length - 1]; + return new Integer(bits, high & (1 << 31) ? -1 : 0); +}; + +var I_fromString = function(str, opt_radix) { + if (str.length == 0) { + throw Error('number format error: empty string'); + } + + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (str.charAt(0) == '-') { + return I_negate(I_fromString(str.substring(1), radix)); + } else if (str.indexOf('-') >= 0) { + throw Error('number format error: interior "-" character'); + } + + var radixToPower = I_fromNumber(Math.pow(radix, 8)); + + var result = Integer.ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i); + var value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = I_fromNumber(Math.pow(radix, size)); + result = I_add(I_mul(result, power), I_fromNumber(value)); + } else { + result = I_mul(result, radixToPower); + result = I_add(result, I_fromNumber(value)); + } + } + return result; +}; + + +Integer.TWO_PWR_32_DBL_ = (1 << 16) * (1 << 16); +Integer.ZERO = I_fromInt(0); +Integer.ONE = I_fromInt(1); +Integer.TWO_PWR_24_ = I_fromInt(1 << 24); + +var I_toInt = function(self) { + return self.bits_.length > 0 ? self.bits_[0] : self.sign_; +}; + +var I_toWord = function(self) { + return I_toInt(self) >>> 0; +}; + +var I_toNumber = function(self) { + if (isNegative(self)) { + return -I_toNumber(I_negate(self)); + } else { + var val = 0; + var pow = 1; + for (var i = 0; i < self.bits_.length; i++) { + val += I_getBitsUnsigned(self, i) * pow; + pow *= Integer.TWO_PWR_32_DBL_; + } + return val; + } +}; + +var I_getBits = function(self, index) { + if (index < 0) { + return 0; + } else if (index < self.bits_.length) { + return self.bits_[index]; + } else { + return self.sign_; + } +}; + +var I_getBitsUnsigned = function(self, index) { + var val = I_getBits(self, index); + return val >= 0 ? val : Integer.TWO_PWR_32_DBL_ + val; +}; + +var getSign = function(self) { + return self.sign_; +}; + +var isZero = function(self) { + if (self.sign_ != 0) { + return false; + } + for (var i = 0; i < self.bits_.length; i++) { + if (self.bits_[i] != 0) { + return false; + } + } + return true; +}; + +var isNegative = function(self) { + return self.sign_ == -1; +}; + +var isOdd = function(self) { + return (self.bits_.length == 0) && (self.sign_ == -1) || + (self.bits_.length > 0) && ((self.bits_[0] & 1) != 0); +}; + +var I_equals = function(self, other) { + if (self.sign_ != other.sign_) { + return false; + } + var len = Math.max(self.bits_.length, other.bits_.length); + for (var i = 0; i < len; i++) { + if (I_getBits(self, i) != I_getBits(other, i)) { + return false; + } + } + return true; +}; + +var I_notEquals = function(self, other) { + return !I_equals(self, other); +}; + +var I_greaterThan = function(self, other) { + return I_compare(self, other) > 0; +}; + +var I_greaterThanOrEqual = function(self, other) { + return I_compare(self, other) >= 0; +}; + +var I_lessThan = function(self, other) { + return I_compare(self, other) < 0; +}; + +var I_lessThanOrEqual = function(self, other) { + return I_compare(self, other) <= 0; +}; + +var I_compare = function(self, other) { + var diff = I_sub(self, other); + if (isNegative(diff)) { + return -1; + } else if (isZero(diff)) { + return 0; + } else { + return +1; + } +}; + +var I_compareInt = function(self, other) { + return I_compare(self, I_fromInt(other)); +} + +var shorten = function(self, numBits) { + var arr_index = (numBits - 1) >> 5; + var bit_index = (numBits - 1) % 32; + var bits = []; + for (var i = 0; i < arr_index; i++) { + bits[i] = I_getBits(self, i); + } + var sigBits = bit_index == 31 ? 0xFFFFFFFF : (1 << (bit_index + 1)) - 1; + var val = I_getBits(self, arr_index) & sigBits; + if (val & (1 << bit_index)) { + val |= 0xFFFFFFFF - sigBits; + bits[arr_index] = val; + return new Integer(bits, -1); + } else { + bits[arr_index] = val; + return new Integer(bits, 0); + } +}; + +var I_negate = function(self) { + return I_add(not(self), Integer.ONE); +}; + +var I_add = function(self, other) { + var len = Math.max(self.bits_.length, other.bits_.length); + var arr = []; + var carry = 0; + + for (var i = 0; i <= len; i++) { + var a1 = I_getBits(self, i) >>> 16; + var a0 = I_getBits(self, i) & 0xFFFF; + + var b1 = I_getBits(other, i) >>> 16; + var b0 = I_getBits(other, i) & 0xFFFF; + + var c0 = carry + a0 + b0; + var c1 = (c0 >>> 16) + a1 + b1; + carry = c1 >>> 16; + c0 &= 0xFFFF; + c1 &= 0xFFFF; + arr[i] = (c1 << 16) | c0; + } + return I_fromBits(arr); +}; + +var I_sub = function(self, other) { + return I_add(self, I_negate(other)); +}; + +var I_mul = function(self, other) { + if (isZero(self)) { + return Integer.ZERO; + } else if (isZero(other)) { + return Integer.ZERO; + } + + if (isNegative(self)) { + if (isNegative(other)) { + return I_mul(I_negate(self), I_negate(other)); + } else { + return I_negate(I_mul(I_negate(self), other)); + } + } else if (isNegative(other)) { + return I_negate(I_mul(self, I_negate(other))); + } + + if (I_lessThan(self, Integer.TWO_PWR_24_) && + I_lessThan(other, Integer.TWO_PWR_24_)) { + return I_fromNumber(I_toNumber(self) * I_toNumber(other)); + } + + var len = self.bits_.length + other.bits_.length; + var arr = []; + for (var i = 0; i < 2 * len; i++) { + arr[i] = 0; + } + for (var i = 0; i < self.bits_.length; i++) { + for (var j = 0; j < other.bits_.length; j++) { + var a1 = I_getBits(self, i) >>> 16; + var a0 = I_getBits(self, i) & 0xFFFF; + + var b1 = I_getBits(other, j) >>> 16; + var b0 = I_getBits(other, j) & 0xFFFF; + + arr[2 * i + 2 * j] += a0 * b0; + Integer.carry16_(arr, 2 * i + 2 * j); + arr[2 * i + 2 * j + 1] += a1 * b0; + Integer.carry16_(arr, 2 * i + 2 * j + 1); + arr[2 * i + 2 * j + 1] += a0 * b1; + Integer.carry16_(arr, 2 * i + 2 * j + 1); + arr[2 * i + 2 * j + 2] += a1 * b1; + Integer.carry16_(arr, 2 * i + 2 * j + 2); + } + } + + for (var i = 0; i < len; i++) { + arr[i] = (arr[2 * i + 1] << 16) | arr[2 * i]; + } + for (var i = len; i < 2 * len; i++) { + arr[i] = 0; + } + return new Integer(arr, 0); +}; + +Integer.carry16_ = function(bits, index) { + while ((bits[index] & 0xFFFF) != bits[index]) { + bits[index + 1] += bits[index] >>> 16; + bits[index] &= 0xFFFF; + } +}; + +var I_mod = function(self, other) { + return I_rem(I_add(other, I_rem(self, other)), other); +} + +var I_div = function(self, other) { + if(I_greaterThan(self, Integer.ZERO) != I_greaterThan(other, Integer.ZERO)) { + if(I_rem(self, other) != Integer.ZERO) { + return I_sub(I_quot(self, other), Integer.ONE); + } + } + return I_quot(self, other); +} + +var I_quotRem = function(self, other) { + return [0, I_quot(self, other), I_rem(self, other)]; +} + +var I_divMod = function(self, other) { + return [0, I_div(self, other), I_mod(self, other)]; +} + +var I_quot = function(self, other) { + if (isZero(other)) { + throw Error('division by zero'); + } else if (isZero(self)) { + return Integer.ZERO; + } + + if (isNegative(self)) { + if (isNegative(other)) { + return I_quot(I_negate(self), I_negate(other)); + } else { + return I_negate(I_quot(I_negate(self), other)); + } + } else if (isNegative(other)) { + return I_negate(I_quot(self, I_negate(other))); + } + + var res = Integer.ZERO; + var rem = self; + while (I_greaterThanOrEqual(rem, other)) { + var approx = Math.max(1, Math.floor(I_toNumber(rem) / I_toNumber(other))); + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + var approxRes = I_fromNumber(approx); + var approxRem = I_mul(approxRes, other); + while (isNegative(approxRem) || I_greaterThan(approxRem, rem)) { + approx -= delta; + approxRes = I_fromNumber(approx); + approxRem = I_mul(approxRes, other); + } + + if (isZero(approxRes)) { + approxRes = Integer.ONE; + } + + res = I_add(res, approxRes); + rem = I_sub(rem, approxRem); + } + return res; +}; + +var I_rem = function(self, other) { + return I_sub(self, I_mul(I_quot(self, other), other)); +}; + +var not = function(self) { + var len = self.bits_.length; + var arr = []; + for (var i = 0; i < len; i++) { + arr[i] = ~self.bits_[i]; + } + return new Integer(arr, ~self.sign_); +}; + +var I_and = function(self, other) { + var len = Math.max(self.bits_.length, other.bits_.length); + var arr = []; + for (var i = 0; i < len; i++) { + arr[i] = I_getBits(self, i) & I_getBits(other, i); + } + return new Integer(arr, self.sign_ & other.sign_); +}; + +var I_or = function(self, other) { + var len = Math.max(self.bits_.length, other.bits_.length); + var arr = []; + for (var i = 0; i < len; i++) { + arr[i] = I_getBits(self, i) | I_getBits(other, i); + } + return new Integer(arr, self.sign_ | other.sign_); +}; + +var I_xor = function(self, other) { + var len = Math.max(self.bits_.length, other.bits_.length); + var arr = []; + for (var i = 0; i < len; i++) { + arr[i] = I_getBits(self, i) ^ I_getBits(other, i); + } + return new Integer(arr, self.sign_ ^ other.sign_); +}; + +var I_shiftLeft = function(self, numBits) { + var arr_delta = numBits >> 5; + var bit_delta = numBits % 32; + var len = self.bits_.length + arr_delta + (bit_delta > 0 ? 1 : 0); + var arr = []; + for (var i = 0; i < len; i++) { + if (bit_delta > 0) { + arr[i] = (I_getBits(self, i - arr_delta) << bit_delta) | + (I_getBits(self, i - arr_delta - 1) >>> (32 - bit_delta)); + } else { + arr[i] = I_getBits(self, i - arr_delta); + } + } + return new Integer(arr, self.sign_); +}; + +var I_shiftRight = function(self, numBits) { + var arr_delta = numBits >> 5; + var bit_delta = numBits % 32; + var len = self.bits_.length - arr_delta; + var arr = []; + for (var i = 0; i < len; i++) { + if (bit_delta > 0) { + arr[i] = (I_getBits(self, i + arr_delta) >>> bit_delta) | + (I_getBits(self, i + arr_delta + 1) << (32 - bit_delta)); + } else { + arr[i] = I_getBits(self, i + arr_delta); + } + } + return new Integer(arr, self.sign_); +}; + +var I_signum = function(self) { + var cmp = I_compare(self, Integer.ZERO); + if(cmp > 0) { + return Integer.ONE + } + if(cmp < 0) { + return I_sub(Integer.ZERO, Integer.ONE); + } + return Integer.ZERO; +}; + +var I_abs = function(self) { + if(I_compare(self, Integer.ZERO) < 0) { + return I_sub(Integer.ZERO, self); + } + return self; +}; + +var I_decodeDouble = function(x) { + var dec = decodeDouble(x); + var mantissa = I_fromBits([dec[3], dec[2]]); + if(dec[1] < 0) { + mantissa = I_negate(mantissa); + } + return [0, dec[4], mantissa]; +} + +var I_toString = function(self) { + var radix = 10; + + if (isZero(self)) { + return '0'; + } else if (isNegative(self)) { + return '-' + I_toString(I_negate(self)); + } + + var radixToPower = I_fromNumber(Math.pow(radix, 6)); + + var rem = self; + var result = ''; + while (true) { + var remDiv = I_div(rem, radixToPower); + var intval = I_toInt(I_sub(rem, I_mul(remDiv, radixToPower))); + var digits = intval.toString(); + + rem = remDiv; + if (isZero(rem)) { + return digits + result; + } else { + while (digits.length < 6) { + digits = '0' + digits; + } + result = '' + digits + result; + } + } +}; + +var I_fromRat = function(a, b) { + return I_toNumber(a) / I_toNumber(b); +} + +function I_fromInt64(x) { + return I_fromBits([x.getLowBits(), x.getHighBits()]); +} + +function I_toInt64(x) { + return Long.fromBits(I_getBits(x, 0), I_getBits(x, 1)); +} + +function I_fromWord64(x) { + return x; +} + +function I_toWord64(x) { + return I_rem(I_add(__w64_max, x), __w64_max); +} + +// Copyright 2009 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +var Long = function(low, high) { + this.low_ = low | 0; + this.high_ = high | 0; +}; + +Long.IntCache_ = {}; + +Long.fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = Long.IntCache_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new Long(value | 0, value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + Long.IntCache_[value] = obj; + } + return obj; +}; + +Long.fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return Long.ZERO; + } else if (value <= -Long.TWO_PWR_63_DBL_) { + return Long.MIN_VALUE; + } else if (value + 1 >= Long.TWO_PWR_63_DBL_) { + return Long.MAX_VALUE; + } else if (value < 0) { + return Long.fromNumber(-value).negate(); + } else { + return new Long( + (value % Long.TWO_PWR_32_DBL_) | 0, + (value / Long.TWO_PWR_32_DBL_) | 0); + } +}; + +Long.fromBits = function(lowBits, highBits) { + return new Long(lowBits, highBits); +}; + +Long.TWO_PWR_16_DBL_ = 1 << 16; +Long.TWO_PWR_24_DBL_ = 1 << 24; +Long.TWO_PWR_32_DBL_ = + Long.TWO_PWR_16_DBL_ * Long.TWO_PWR_16_DBL_; +Long.TWO_PWR_31_DBL_ = + Long.TWO_PWR_32_DBL_ / 2; +Long.TWO_PWR_48_DBL_ = + Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_16_DBL_; +Long.TWO_PWR_64_DBL_ = + Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_32_DBL_; +Long.TWO_PWR_63_DBL_ = + Long.TWO_PWR_64_DBL_ / 2; +Long.ZERO = Long.fromInt(0); +Long.ONE = Long.fromInt(1); +Long.NEG_ONE = Long.fromInt(-1); +Long.MAX_VALUE = + Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); +Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0); +Long.TWO_PWR_24_ = Long.fromInt(1 << 24); + +Long.prototype.toInt = function() { + return this.low_; +}; + +Long.prototype.toNumber = function() { + return this.high_ * Long.TWO_PWR_32_DBL_ + + this.getLowBitsUnsigned(); +}; + +Long.prototype.getHighBits = function() { + return this.high_; +}; + +Long.prototype.getLowBits = function() { + return this.low_; +}; + +Long.prototype.getLowBitsUnsigned = function() { + return (this.low_ >= 0) ? + this.low_ : Long.TWO_PWR_32_DBL_ + this.low_; +}; + +Long.prototype.isZero = function() { + return this.high_ == 0 && this.low_ == 0; +}; + +Long.prototype.isNegative = function() { + return this.high_ < 0; +}; + +Long.prototype.isOdd = function() { + return (this.low_ & 1) == 1; +}; + +Long.prototype.equals = function(other) { + return (this.high_ == other.high_) && (this.low_ == other.low_); +}; + +Long.prototype.notEquals = function(other) { + return (this.high_ != other.high_) || (this.low_ != other.low_); +}; + +Long.prototype.lessThan = function(other) { + return this.compare(other) < 0; +}; + +Long.prototype.lessThanOrEqual = function(other) { + return this.compare(other) <= 0; +}; + +Long.prototype.greaterThan = function(other) { + return this.compare(other) > 0; +}; + +Long.prototype.greaterThanOrEqual = function(other) { + return this.compare(other) >= 0; +}; + +Long.prototype.compare = function(other) { + if (this.equals(other)) { + return 0; + } + + var thisNeg = this.isNegative(); + var otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) { + return -1; + } + if (!thisNeg && otherNeg) { + return 1; + } + + if (this.subtract(other).isNegative()) { + return -1; + } else { + return 1; + } +}; + +Long.prototype.negate = function() { + if (this.equals(Long.MIN_VALUE)) { + return Long.MIN_VALUE; + } else { + return this.not().add(Long.ONE); + } +}; + +Long.prototype.add = function(other) { + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +Long.prototype.subtract = function(other) { + return this.add(other.negate()); +}; + +Long.prototype.multiply = function(other) { + if (this.isZero()) { + return Long.ZERO; + } else if (other.isZero()) { + return Long.ZERO; + } + + if (this.equals(Long.MIN_VALUE)) { + return other.isOdd() ? Long.MIN_VALUE : Long.ZERO; + } else if (other.equals(Long.MIN_VALUE)) { + return this.isOdd() ? Long.MIN_VALUE : Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().multiply(other.negate()); + } else { + return this.negate().multiply(other).negate(); + } + } else if (other.isNegative()) { + return this.multiply(other.negate()).negate(); + } + + if (this.lessThan(Long.TWO_PWR_24_) && + other.lessThan(Long.TWO_PWR_24_)) { + return Long.fromNumber(this.toNumber() * other.toNumber()); + } + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +Long.prototype.div = function(other) { + if (other.isZero()) { + throw Error('division by zero'); + } else if (this.isZero()) { + return Long.ZERO; + } + + if (this.equals(Long.MIN_VALUE)) { + if (other.equals(Long.ONE) || + other.equals(Long.NEG_ONE)) { + return Long.MIN_VALUE; + } else if (other.equals(Long.MIN_VALUE)) { + return Long.ONE; + } else { + var halfThis = this.shiftRight(1); + var approx = halfThis.div(other).shiftLeft(1); + if (approx.equals(Long.ZERO)) { + return other.isNegative() ? Long.ONE : Long.NEG_ONE; + } else { + var rem = this.subtract(other.multiply(approx)); + var result = approx.add(rem.div(other)); + return result; + } + } + } else if (other.equals(Long.MIN_VALUE)) { + return Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().div(other.negate()); + } else { + return this.negate().div(other).negate(); + } + } else if (other.isNegative()) { + return this.div(other.negate()).negate(); + } + + var res = Long.ZERO; + var rem = this; + while (rem.greaterThanOrEqual(other)) { + var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); + + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + + var approxRes = Long.fromNumber(approx); + var approxRem = approxRes.multiply(other); + while (approxRem.isNegative() || approxRem.greaterThan(rem)) { + approx -= delta; + approxRes = Long.fromNumber(approx); + approxRem = approxRes.multiply(other); + } + + if (approxRes.isZero()) { + approxRes = Long.ONE; + } + + res = res.add(approxRes); + rem = rem.subtract(approxRem); + } + return res; +}; + +Long.prototype.modulo = function(other) { + return this.subtract(this.div(other).multiply(other)); +}; + +Long.prototype.not = function() { + return Long.fromBits(~this.low_, ~this.high_); +}; + +Long.prototype.and = function(other) { + return Long.fromBits(this.low_ & other.low_, + this.high_ & other.high_); +}; + +Long.prototype.or = function(other) { + return Long.fromBits(this.low_ | other.low_, + this.high_ | other.high_); +}; + +Long.prototype.xor = function(other) { + return Long.fromBits(this.low_ ^ other.low_, + this.high_ ^ other.high_); +}; + +Long.prototype.shiftLeft = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var low = this.low_; + if (numBits < 32) { + var high = this.high_; + return Long.fromBits( + low << numBits, + (high << numBits) | (low >>> (32 - numBits))); + } else { + return Long.fromBits(0, low << (numBits - 32)); + } + } +}; + +Long.prototype.shiftRight = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >> numBits); + } else { + return Long.fromBits( + high >> (numBits - 32), + high >= 0 ? 0 : -1); + } + } +}; + +Long.prototype.shiftRightUnsigned = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >>> numBits); + } else if (numBits == 32) { + return Long.fromBits(high, 0); + } else { + return Long.fromBits(high >>> (numBits - 32), 0); + } + } +}; + + + +// Int64 +function hs_eqInt64(x, y) {return x.equals(y);} +function hs_neInt64(x, y) {return !x.equals(y);} +function hs_ltInt64(x, y) {return x.compare(y) < 0;} +function hs_leInt64(x, y) {return x.compare(y) <= 0;} +function hs_gtInt64(x, y) {return x.compare(y) > 0;} +function hs_geInt64(x, y) {return x.compare(y) >= 0;} +function hs_quotInt64(x, y) {return x.div(y);} +function hs_remInt64(x, y) {return x.modulo(y);} +function hs_plusInt64(x, y) {return x.add(y);} +function hs_minusInt64(x, y) {return x.subtract(y);} +function hs_timesInt64(x, y) {return x.multiply(y);} +function hs_negateInt64(x) {return x.negate();} +function hs_uncheckedIShiftL64(x, bits) {x.shiftLeft(bits);} +function hs_uncheckedIShiftRA64(x, bits) {x.shiftRight(bits);} +function hs_uncheckedIShiftRL64(x, bits) {x.shiftRightUnsigned(bits);} +function hs_intToInt64(x) {return new Long(x, 0);} +function hs_int64ToInt(x) {return x.toInt();} + + + +// Word64 +function hs_wordToWord64(x) { + return I_fromInt(x); +} +function hs_word64ToWord(x) { + return I_toInt(x); +} +function hs_mkWord64(low, high) { + return I_fromBits([low, high]); +} + +var hs_and64 = I_and; +var hs_or64 = I_or; +var hs_xor64 = I_xor; +var __i64_all_ones = I_fromBits([0xffffffff, 0xffffffff]); +function hs_not64(x) { + return I_xor(x, __i64_all_ones); +} +var hs_eqWord64 = I_equals; +var hs_neWord64 = I_notEquals; +var hs_ltWord64 = I_lessThan; +var hs_leWord64 = I_lessThanOrEqual; +var hs_gtWord64 = I_greaterThan; +var hs_geWord64 = I_greaterThanOrEqual; +var hs_quotWord64 = I_quot; +var hs_remWord64 = I_rem; +var __w64_max = I_fromBits([0,0,1]); +function hs_uncheckedShiftL64(x, bits) { + return I_rem(I_shiftLeft(x, bits), __w64_max); +} +var hs_uncheckedShiftRL64 = I_shiftRight; +function hs_int64ToWord64(x) { + var tmp = I_add(__w64_max, I_fromBits([x.getLowBits(), x.getHighBits()])); + return I_rem(tmp, __w64_max); +} +function hs_word64ToInt64(x) { + return Long.fromBits(I_getBits(x, 0), I_getBits(x, 1)); +} + +// Joseph Myers' MD5 implementation; used under the BSD license. + +function md5cycle(x, k) { +var a = x[0], b = x[1], c = x[2], d = x[3]; + +a = ff(a, b, c, d, k[0], 7, -680876936); +d = ff(d, a, b, c, k[1], 12, -389564586); +c = ff(c, d, a, b, k[2], 17, 606105819); +b = ff(b, c, d, a, k[3], 22, -1044525330); +a = ff(a, b, c, d, k[4], 7, -176418897); +d = ff(d, a, b, c, k[5], 12, 1200080426); +c = ff(c, d, a, b, k[6], 17, -1473231341); +b = ff(b, c, d, a, k[7], 22, -45705983); +a = ff(a, b, c, d, k[8], 7, 1770035416); +d = ff(d, a, b, c, k[9], 12, -1958414417); +c = ff(c, d, a, b, k[10], 17, -42063); +b = ff(b, c, d, a, k[11], 22, -1990404162); +a = ff(a, b, c, d, k[12], 7, 1804603682); +d = ff(d, a, b, c, k[13], 12, -40341101); +c = ff(c, d, a, b, k[14], 17, -1502002290); +b = ff(b, c, d, a, k[15], 22, 1236535329); + +a = gg(a, b, c, d, k[1], 5, -165796510); +d = gg(d, a, b, c, k[6], 9, -1069501632); +c = gg(c, d, a, b, k[11], 14, 643717713); +b = gg(b, c, d, a, k[0], 20, -373897302); +a = gg(a, b, c, d, k[5], 5, -701558691); +d = gg(d, a, b, c, k[10], 9, 38016083); +c = gg(c, d, a, b, k[15], 14, -660478335); +b = gg(b, c, d, a, k[4], 20, -405537848); +a = gg(a, b, c, d, k[9], 5, 568446438); +d = gg(d, a, b, c, k[14], 9, -1019803690); +c = gg(c, d, a, b, k[3], 14, -187363961); +b = gg(b, c, d, a, k[8], 20, 1163531501); +a = gg(a, b, c, d, k[13], 5, -1444681467); +d = gg(d, a, b, c, k[2], 9, -51403784); +c = gg(c, d, a, b, k[7], 14, 1735328473); +b = gg(b, c, d, a, k[12], 20, -1926607734); + +a = hh(a, b, c, d, k[5], 4, -378558); +d = hh(d, a, b, c, k[8], 11, -2022574463); +c = hh(c, d, a, b, k[11], 16, 1839030562); +b = hh(b, c, d, a, k[14], 23, -35309556); +a = hh(a, b, c, d, k[1], 4, -1530992060); +d = hh(d, a, b, c, k[4], 11, 1272893353); +c = hh(c, d, a, b, k[7], 16, -155497632); +b = hh(b, c, d, a, k[10], 23, -1094730640); +a = hh(a, b, c, d, k[13], 4, 681279174); +d = hh(d, a, b, c, k[0], 11, -358537222); +c = hh(c, d, a, b, k[3], 16, -722521979); +b = hh(b, c, d, a, k[6], 23, 76029189); +a = hh(a, b, c, d, k[9], 4, -640364487); +d = hh(d, a, b, c, k[12], 11, -421815835); +c = hh(c, d, a, b, k[15], 16, 530742520); +b = hh(b, c, d, a, k[2], 23, -995338651); + +a = ii(a, b, c, d, k[0], 6, -198630844); +d = ii(d, a, b, c, k[7], 10, 1126891415); +c = ii(c, d, a, b, k[14], 15, -1416354905); +b = ii(b, c, d, a, k[5], 21, -57434055); +a = ii(a, b, c, d, k[12], 6, 1700485571); +d = ii(d, a, b, c, k[3], 10, -1894986606); +c = ii(c, d, a, b, k[10], 15, -1051523); +b = ii(b, c, d, a, k[1], 21, -2054922799); +a = ii(a, b, c, d, k[8], 6, 1873313359); +d = ii(d, a, b, c, k[15], 10, -30611744); +c = ii(c, d, a, b, k[6], 15, -1560198380); +b = ii(b, c, d, a, k[13], 21, 1309151649); +a = ii(a, b, c, d, k[4], 6, -145523070); +d = ii(d, a, b, c, k[11], 10, -1120210379); +c = ii(c, d, a, b, k[2], 15, 718787259); +b = ii(b, c, d, a, k[9], 21, -343485551); + +x[0] = add32(a, x[0]); +x[1] = add32(b, x[1]); +x[2] = add32(c, x[2]); +x[3] = add32(d, x[3]); + +} + +function cmn(q, a, b, x, s, t) { +a = add32(add32(a, q), add32(x, t)); +return add32((a << s) | (a >>> (32 - s)), b); +} + +function ff(a, b, c, d, x, s, t) { +return cmn((b & c) | ((~b) & d), a, b, x, s, t); +} + +function gg(a, b, c, d, x, s, t) { +return cmn((b & d) | (c & (~d)), a, b, x, s, t); +} + +function hh(a, b, c, d, x, s, t) { +return cmn(b ^ c ^ d, a, b, x, s, t); +} + +function ii(a, b, c, d, x, s, t) { +return cmn(c ^ (b | (~d)), a, b, x, s, t); +} + +function md51(s) { +var n = s.length, +state = [1732584193, -271733879, -1732584194, 271733878], i; +for (i=64; i<=s.length; i+=64) { +md5cycle(state, md5blk(s.substring(i-64, i))); +} +s = s.substring(i-64); +var tail = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; +for (i=0; i<s.length; i++) +tail[i>>2] |= s.charCodeAt(i) << ((i%4) << 3); +tail[i>>2] |= 0x80 << ((i%4) << 3); +if (i > 55) { +md5cycle(state, tail); +for (i=0; i<16; i++) tail[i] = 0; +} +tail[14] = n*8; +md5cycle(state, tail); +return state; +} + +function md5blk(s) { +var md5blks = [], i; +for (i=0; i<64; i+=4) { +md5blks[i>>2] = s.charCodeAt(i) ++ (s.charCodeAt(i+1) << 8) ++ (s.charCodeAt(i+2) << 16) ++ (s.charCodeAt(i+3) << 24); +} +return md5blks; +} + +var hex_chr = '0123456789abcdef'.split(''); + +function rhex(n) +{ +var s='', j=0; +for(; j<4; j++) +s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] ++ hex_chr[(n >> (j * 8)) & 0x0F]; +return s; +} + +function hex(x) { +for (var i=0; i<x.length; i++) +x[i] = rhex(x[i]); +return x.join(''); +} + +function md5(s) { +return hex(md51(s)); +} + +function add32(a, b) { +return (a + b) & 0xFFFFFFFF; +} + +// Functions for dealing with arrays. + +function newArr(n, x) { + var arr = []; + for(; n >= 0; --n) { + arr.push(x); + } + return arr; +} + +// Create all views at once; perhaps it's wasteful, but it's better than having +// to check for the right view at each read or write. +function newByteArr(n) { + // Pad the thing to multiples of 8. + var padding = 8 - n % 8; + if(padding < 8) { + n += padding; + } + var arr = {}; + var buffer = new ArrayBuffer(n); + var views = {}; + views['i8'] = new Int8Array(buffer); + views['i16'] = new Int16Array(buffer); + views['i32'] = new Int32Array(buffer); + views['w8'] = new Uint8Array(buffer); + views['w16'] = new Uint16Array(buffer); + views['w32'] = new Uint32Array(buffer); + views['f32'] = new Float32Array(buffer); + views['f64'] = new Float64Array(buffer); + arr['b'] = buffer; + arr['v'] = views; + // ByteArray and Addr are the same thing, so keep an offset if we get + // casted. + arr['off'] = 0; + return arr; +} + +// An attempt at emulating pointers enough for ByteString and Text to be +// usable without patching the hell out of them. +// The general idea is that Addr# is a byte array with an associated offset. + +function plusAddr(addr, off) { + var newaddr = {}; + newaddr['off'] = addr['off'] + off; + newaddr['b'] = addr['b']; + newaddr['v'] = addr['v']; + return newaddr; +} + +function writeOffAddr(type, elemsize, addr, off, x) { + addr['v'][type][addr.off/elemsize + off] = x; +} + +function readOffAddr(type, elemsize, addr, off) { + return addr['v'][type][addr.off/elemsize + off]; +} + +// Two addresses are equal if they point to the same buffer and have the same +// offset. For other comparisons, just use the offsets - nobody in their right +// mind would check if one pointer is less than another, completely unrelated, +// pointer and then act on that information anyway. +function addrEq(a, b) { + if(a == b) { + return true; + } + return a && b && a['b'] == b['b'] && a['off'] == b['off']; +} + +function addrLT(a, b) { + if(a) { + return b && a['off'] < b['off']; + } else { + return (b != 0); + } +} + +function addrGT(a, b) { + if(b) { + return a && a['off'] > b['off']; + } else { + return (a != 0); + } +} + +function withChar(f, charCode) { + return f(String.fromCharCode(charCode)).charCodeAt(0); +} + +function u_towlower(charCode) { + return withChar(function(c) {return c.toLowerCase()}, charCode); +} + +function u_towupper(charCode) { + return withChar(function(c) {return c.toUpperCase()}, charCode); +} + +var u_towtitle = u_towupper; + +function u_iswupper(charCode) { + var c = String.fromCharCode(charCode); + return c == c.toUpperCase() && c != c.toLowerCase(); +} + +function u_iswlower(charCode) { + var c = String.fromCharCode(charCode); + return c == c.toLowerCase() && c != c.toUpperCase(); +} + +function u_iswdigit(charCode) { + return charCode >= 48 && charCode <= 57; +} + +function u_iswcntrl(charCode) { + return charCode <= 0x1f || charCode == 0x7f; +} + +function u_iswspace(charCode) { + var c = String.fromCharCode(charCode); + return c.replace(/\s/g,'') != c; +} + +function u_iswalpha(charCode) { + var c = String.fromCharCode(charCode); + return c.replace(__hs_alphare, '') != c; +} + +function u_iswalnum(charCode) { + return u_iswdigit(charCode) || u_iswalpha(charCode); +} + +function u_iswprint(charCode) { + return !u_iswcntrl(charCode); +} + +function u_gencat(c) { + throw 'u_gencat is only supported with --full-unicode.'; +} + +// Regex that matches any alphabetic character in any language. Horrible thing. +var __hs_alphare = /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/g; + +// 2D Canvas drawing primitives. +function jsHasCtx2D(elem) {return !!elem.getContext;} +function jsGetCtx2D(elem) {return elem.getContext('2d');} +function jsBeginPath(ctx) {ctx.beginPath();} +function jsMoveTo(ctx, x, y) {ctx.moveTo(x, y);} +function jsLineTo(ctx, x, y) {ctx.lineTo(x, y);} +function jsStroke(ctx) {ctx.stroke();} +function jsFill(ctx) {ctx.fill();} +function jsRotate(ctx, radians) {ctx.rotate(radians);} +function jsTranslate(ctx, x, y) {ctx.translate(x, y);} +function jsScale(ctx, x, y) {ctx.scale(x, y);} +function jsPushState(ctx) {ctx.save();} +function jsPopState(ctx) {ctx.restore();} +function jsResetCanvas(el) {el.width = el.width;} +function jsDrawImage(ctx, img, x, y) {ctx.drawImage(img, x, y);} +function jsDrawImageClipped(ctx, img, x, y, cx, cy, cw, ch) { + ctx.drawImage(img, cx, cy, cw, ch, x, y, cw, ch); +} +function jsDrawText(ctx, str, x, y) {ctx.fillText(str, x, y);} +function jsClip(ctx) {ctx.clip();} +function jsArc(ctx, x, y, radius, fromAngle, toAngle) { + ctx.arc(x, y, radius, fromAngle, toAngle); +} +function jsCanvasToDataURL(el) {return el.toDataURL('image/png');} + +// Simulate handles. +// When implementing new handles, remember that passed strings may be thunks, +// and so need to be evaluated before use. + +function jsNewHandle(init, read, write, flush, close, seek, tell) { + var h = { + read: read || function() {}, + write: write || function() {}, + seek: seek || function() {}, + tell: tell || function() {}, + close: close || function() {}, + flush: flush || function() {} + }; + init.call(h); + return h; +} + +function jsReadHandle(h, len) {return h.read(len);} +function jsWriteHandle(h, str) {return h.write(str);} +function jsFlushHandle(h) {return h.flush();} +function jsCloseHandle(h) {return h.close();} + +function jsMkConWriter(op) { + return function(str) { + str = E(str); + var lines = (this.buf + str).split('\n'); + for(var i = 0; i < lines.length-1; ++i) { + op.call(console, lines[i]); + } + this.buf = lines[lines.length-1]; + } +} + +function jsMkStdout() { + return jsNewHandle( + function() {this.buf = '';}, + function(_) {return '';}, + jsMkConWriter(console.log), + function() {console.log(this.buf); this.buf = '';} + ); +} + +function jsMkStderr() { + return jsNewHandle( + function() {this.buf = '';}, + function(_) {return '';}, + jsMkConWriter(console.warn), + function() {console.warn(this.buf); this.buf = '';} + ); +} + +function jsMkStdin() { + return jsNewHandle( + function() {this.buf = '';}, + function(len) { + while(this.buf.length < len) { + this.buf += prompt('[stdin]') + '\n'; + } + var ret = this.buf.substr(0, len); + this.buf = this.buf.substr(len); + return ret; + } + ); +} + +var _0=false,_1=new T(function(){return [0,"(function(e){return e.parentNode;})"];}),_2=function(_3){var _4=A(_3,[_]);return E(_4);},_5=function(_6){return _2(function(_){var _=0;return eval(E(_6)[1]);});},_7=new T(function(){return _5(_1);}),_8=[0,0],_9=[0],_a=function(_b,_){return _9;},_c=function(_){return _9;},_d=[0,_c,_a],_e=2,_f=[1],_g=[0],_h=[0,_g,_8,_e,_d,_0,_f],_i=function(_){var _=0,_j=newMVar(),_=putMVar(_j,_h);return [0,_j];},_k=new T(function(){return _2(_i);}),_l=function(_m,_n,_){var _o=E(_k)[1],_p=takeMVar(_o),_q=A(_m,[_p,_]),_r=E(_q),_s=E(_r[1]),_t=_s[1],_u=_s[2],_=putMVar(_o,new T(function(){var _v=E(_r[2]);return [0,_v[1],_v[2],_v[3],_v[4],_0,_v[6]];}));if(!E(E(_p)[5])){var _w=A(_t,[_n,_]);return _u;}else{var _x=A(_7,[E(E(_n)[1]),_]),_y=A(_t,[[0,_x],_]);return _u;}},_z=function(_A,_B,_){var _C=jsCreateTextNode(toJSStr(E(_A))),_D=jsAppendChild(_C,E(_B)[1]);return [0,_C];},_E=[0,34],_F=unCStr("br"),_G=function(_H,_){var _I=jsCreateElem(toJSStr(E(_F))),_J=jsAppendChild(_I,E(_H)[1]);return [0,_I];},_K=[1,_E,_g],_L=unCStr("hello, what is your name?"),_M=unCStr("div"),_N=function(_O,_P){var _Q=new T(function(){return A(_O,[_P]);});return function(_R,_){var _S=jsCreateElem(toJSStr(E(_M))),_T=jsAppendChild(_S,E(_R)[1]),_U=[0,_S],_V=A(_Q,[_U,_]);return _U;};},_W=new T(function(){return [0,"(function(){return document.body;})"];}),_X=unCStr("id"),_Y=unCStr("console"),_Z=function(_10,_){return _10;},_11=function(_12){return E(_12);},_13=function(_){var _14=E(_Y),_15=jsFind(toJSStr(_14)),_16=E(_15);if(!_16[0]){var _17=A(_5,[_W,_]),_18=A(_N,[_11,_Z,[0,_17],_]),_19=E(_18),_1a=jsSetAttr(_19[1],toJSStr(E(_X)),toJSStr(_14));return _19;}else{return _16[1];}},_1b=function(_1c,_1d,_){return [0,[0,_Z,[1,_1c]],_1d];},_1e=unCStr("id"),_1f=0,_1g=function(_1h,_1i,_1j,_1k){return A(_1h,[new T(function(){return function(_){var _1l=jsSetAttr(E(_1i)[1],toJSStr(E(_1j)),toJSStr(E(_1k)));return _1f;};})]);},_1m=function(_1n){return E(_1n);},_1o=function(_1p,_1q,_1r,_){var _1s=E(_1q),_1t=A(_1p,[_1r,_]),_1u=A(_1g,[_1m,_1t,_1s[1],_1s[2],_]);return _1t;},_1v=function(_1w,_1x){while(1){var _1y=(function(_1z,_1A){var _1B=E(_1A);if(!_1B[0]){return E(_1z);}else{_1w=function(_1C,_){return _1o(_1z,_1B[1],_1C,_);};_1x=_1B[2];return null;}})(_1w,_1x);if(_1y!=null){return _1y;}}},_1D=function(_1E,_1F,_){return [0,_1f,_1E];},_1G=function(_1H,_){return [0,_1H,_1H];},_1I=[0,coercionToken],_1J=function(_1K,_1L,_){var _1M=A(_1K,[_]);return A(_1L,[_]);},_1N=function(_1O,_1P,_){return _1J(_1O,_1P,_);},_1Q=function(_1R,_1S,_){var _1T=A(_1R,[_]);return A(_1S,[_1T,_]);},_1U=unCStr("base"),_1V=unCStr("GHC.IO.Exception"),_1W=unCStr("IOException"),_1X=[0,I_fromBits([4053623282,1685460941]),I_fromBits([3693590983,2507416641]),_1U,_1V,_1W],_1Y=[0,I_fromBits([4053623282,1685460941]),I_fromBits([3693590983,2507416641]),_1X,_g],_1Z=function(_20){return E(_1Y);},_21=function(_22){return E(E(_22)[1]);},_23=unCStr("Maybe.fromJust: Nothing"),_24=new T(function(){return err(_23);}),_25=function(_26,_27,_28){var _29=new T(function(){var _2a=A(_26,[_28]),_2b=A(_27,[new T(function(){var _2c=E(_29);return _2c[0]==0?E(_24):E(_2c[1]);})]),_2d=hs_eqWord64(_2a[1],_2b[1]);if(!E(_2d)){return [0];}else{var _2e=hs_eqWord64(_2a[2],_2b[2]);return E(_2e)==0?[0]:[1,_28];}});return E(_29);},_2f=function(_2g){var _2h=E(_2g);return _25(_21(_2h[1]),_1Z,_2h[2]);},_2i=unCStr(": "),_2j=[0,41],_2k=unCStr(" ("),_2l=function(_2m,_2n){var _2o=E(_2m);return _2o[0]==0?E(_2n):[1,_2o[1],new T(function(){return _2l(_2o[2],_2n);})];},_2p=unCStr("already exists"),_2q=unCStr("does not exist"),_2r=unCStr("protocol error"),_2s=unCStr("failed"),_2t=unCStr("invalid argument"),_2u=unCStr("inappropriate type"),_2v=unCStr("hardware fault"),_2w=unCStr("unsupported operation"),_2x=unCStr("timeout"),_2y=unCStr("resource vanished"),_2z=unCStr("interrupted"),_2A=unCStr("resource busy"),_2B=unCStr("resource exhausted"),_2C=unCStr("end of file"),_2D=unCStr("illegal operation"),_2E=unCStr("permission denied"),_2F=unCStr("user error"),_2G=unCStr("unsatisified constraints"),_2H=unCStr("system error"),_2I=function(_2J,_2K){switch(E(_2J)){case 0:return _2l(_2p,_2K);case 1:return _2l(_2q,_2K);case 2:return _2l(_2A,_2K);case 3:return _2l(_2B,_2K);case 4:return _2l(_2C,_2K);case 5:return _2l(_2D,_2K);case 6:return _2l(_2E,_2K);case 7:return _2l(_2F,_2K);case 8:return _2l(_2G,_2K);case 9:return _2l(_2H,_2K);case 10:return _2l(_2r,_2K);case 11:return _2l(_2s,_2K);case 12:return _2l(_2t,_2K);case 13:return _2l(_2u,_2K);case 14:return _2l(_2v,_2K);case 15:return _2l(_2w,_2K);case 16:return _2l(_2x,_2K);case 17:return _2l(_2y,_2K);default:return _2l(_2z,_2K);}},_2L=[0,125],_2M=unCStr("{handle: "),_2N=function(_2O,_2P,_2Q,_2R,_2S,_2T){var _2U=new T(function(){var _2V=new T(function(){return _2I(_2P,new T(function(){var _2W=E(_2R);return _2W[0]==0?E(_2T):_2l(_2k,new T(function(){return _2l(_2W,[1,_2j,_2T]);}));}));}),_2X=E(_2Q);return _2X[0]==0?E(_2V):_2l(_2X,new T(function(){return _2l(_2i,_2V);}));}),_2Y=E(_2S);if(!_2Y[0]){var _2Z=E(_2O);if(!_2Z[0]){return E(_2U);}else{var _30=E(_2Z[1]);return _30[0]==0?_2l(_2M,new T(function(){return _2l(_30[1],[1,_2L,new T(function(){return _2l(_2i,_2U);})]);})):_2l(_2M,new T(function(){return _2l(_30[1],[1,_2L,new T(function(){return _2l(_2i,_2U);})]);}));}}else{return _2l(_2Y[1],new T(function(){return _2l(_2i,_2U);}));}},_31=function(_32){var _33=E(_32);return _2N(_33[1],_33[2],_33[3],_33[4],_33[6],_g);},_34=function(_35,_36){var _37=E(_35);return _2N(_37[1],_37[2],_37[3],_37[4],_37[6],_36);},_38=[0,44],_39=[0,93],_3a=[0,91],_3b=function(_3c,_3d,_3e){var _3f=E(_3d);return _3f[0]==0?unAppCStr("[]",_3e):[1,_3a,new T(function(){return A(_3c,[_3f[1],new T(function(){var _3g=function(_3h){var _3i=E(_3h);return _3i[0]==0?E([1,_39,_3e]):[1,_38,new T(function(){return A(_3c,[_3i[1],new T(function(){return _3g(_3i[2]);})]);})];};return _3g(_3f[2]);})]);})];},_3j=function(_3k,_3l){return _3b(_34,_3k,_3l);},_3m=function(_3n,_3o,_3p){var _3q=E(_3o);return _2N(_3q[1],_3q[2],_3q[3],_3q[4],_3q[6],_3p);},_3r=[0,_3m,_31,_3j],_3s=new T(function(){return [0,_1Z,_3r,_3t,_2f];}),_3t=function(_3u){return [0,_3s,_3u];},_3v=7,_3w=function(_3x){return [0,_9,_3v,_g,_3x,_9,_9];},_3y=function(_3z,_){return die(new T(function(){return _3t(new T(function(){return _3w(_3z);}));}));},_3A=function(_3B,_){return _3y(_3B,_);},_3C=[0,_1Q,_1N,_Z,_3A],_3D=function(_3E){return E(E(_3E)[1]);},_3F=function(_3G,_3H,_3I,_3J){return A(_3D,[_3G,new T(function(){return A(_3H,[_3J]);}),function(_3K){return A(_3I,[new T(function(){return E(E(_3K)[1]);}),new T(function(){return E(E(_3K)[2]);})]);}]);},_3L=function(_3M,_3N,_3O,_3P){return A(_3D,[_3M,new T(function(){return A(_3N,[_3P]);}),function(_3Q){return A(_3O,[new T(function(){return E(E(_3Q)[2]);})]);}]);},_3R=function(_3S,_3T,_3U,_3V){return _3L(_3S,_3T,_3U,_3V);},_3W=function(_3X){return E(E(_3X)[4]);},_3Y=function(_3Z,_40){var _41=new T(function(){return A(_3W,[_3Z,_40]);});return function(_42){return E(_41);};},_43=function(_44){return E(E(_44)[3]);},_45=function(_46){var _47=new T(function(){return _43(_46);});return [0,function(_3T,_3U,_3V){return _3F(_46,_3T,_3U,_3V);},function(_3T,_3U,_3V){return _3R(_46,_3T,_3U,_3V);},function(_48,_49){return A(_47,[[0,_48,_49]]);},function(_3V){return _3Y(_46,_3V);}];},_4a=new T(function(){return _45(_3C);}),_4b=[0,112],_4c=function(_4d,_4e){var _4f=jsShowI(_4d);return _2l(fromJSStr(_4f),_4e);},_4g=[0,41],_4h=[0,40],_4i=function(_4j,_4k,_4l){return _4k>=0?_4c(_4k,_4l):_4j<=6?_4c(_4k,_4l):[1,_4h,new T(function(){var _4m=jsShowI(_4k);return _2l(fromJSStr(_4m),[1,_4g,_4l]);})];},_4n=function(_4o,_4p,_4q,_4r){var _4s=E(_4p);return A(_4s[1],[new T(function(){var _4t=E(_4o);return E(_4q);}),function(_4u){var _4v=new T(function(){return E(E(_4u)[2]);});return A(_4s[2],[new T(function(){return A(_4r,[new T(function(){var _4w=E(new T(function(){var _4x=E(_4o);return [0,coercionToken];})),_4y=E(_4u);return [0,_4y[1],new T(function(){return [0,E(_4v)[1]+1|0];}),_4y[3],_4y[4],_4y[5],_4y[6]];})]);}),new T(function(){return A(_4s[3],[[1,_4b,new T(function(){return _2l(_4i(0,E(_4v)[1],_g),new T(function(){return E(E(_4u)[1]);}));})]]);})]);}]);},_4z=new T(function(){return _4n(_1I,_4a,_1G,_1D);}),_4A=unCStr("span"),_4B=function(_4C,_4D,_){var _4E=jsCreateElem(toJSStr(E(_4C))),_4F=jsAppendChild(_4E,E(_4D)[1]);return [0,_4E];},_4G=function(_1C,_){return _4B(_4A,_1C,_);},_4H=unCStr(" could be found!"),_4I=function(_4J){return err(unAppCStr("No element with ID ",new T(function(){return _2l(_4J,_4H);})));},_4K=function(_4L,_4M,_){var _4N=E(_4M),_4O=jsFind(toJSStr(_4N)),_4P=E(_4O);if(!_4P[0]){return _4I(_4N);}else{var _4Q=E(_4P[1]),_4R=jsClearChildren(_4Q[1]);return _l(_4L,_4Q,_);}},_4S=function(_4T,_4U,_4V,_){var _4W=A(_4z,[_4V,_]),_4X=E(_4W),_4Y=_4X[1],_4Z=E(_4X[2]),_50=_4Z[2],_51=E(_4Z[4]),_52=A(_4T,[[0,_4Z[1],_50,_4Z[3],[0,function(_){return _4K(function(_53,_){var _54=A(_4T,[new T(function(){var _55=E(_53);return [0,_55[1],_50,_55[3],_55[4],_55[5],_55[6]];}),_]);return [0,[0,_Z,E(E(_54)[1])[2]],_53];},_4Y,_);},function(_56,_){var _57=_4K(new T(function(){return A(_4U,[_56]);}),_4Y,_),_58=E(_57);return _58[0]==0?_9:A(_51[2],[_58[1],_]);}],_4Z[5],_4Z[6]],_]),_59=E(_52),_5a=_59[2],_5b=E(_59[1]),_5c=_5b[1],_5d=new T(function(){return _1v(_4G,[1,[0,_1e,_4Y],_g]);}),_5e=E(_5b[2]);if(!_5e[0]){return [0,[0,function(_5f,_){var _5g=A(_5c,[_5f,_]),_5h=A(_5d,[_5f,_]);return _5f;},_9],new T(function(){var _5i=E(_5a);return [0,_5i[1],_5i[2],_5i[3],_51,_5i[5],_5i[6]];})];}else{var _5j=A(_4U,[_5e[1],new T(function(){var _5k=E(_5a);return [0,_5k[1],_5k[2],_5k[3],_51,_5k[5],_5k[6]];}),_]),_5l=E(_5j),_5m=E(_5l[1]);return [0,[0,function(_5n,_){var _5o=A(_5c,[_5n,_]),_5p=A(_5d,[_5n,_]),_5q=A(_5m[1],[_5p,_]);return _5n;},_5m[2]],_5l[2]];}},_5r=unCStr("Pattern match failure in do expression at Haste\\HPlay\\Console.hs:56:4-11"),_5s=[2,coercionToken],_5t=function(_5u,_5v,_5w,_){var _5x=_4B(_5u,_5w,_),_5y=A(_5v,[_5x,_]);return _5x;},_5z=unCStr("()"),_5A=unCStr("GHC.Tuple"),_5B=unCStr("ghc-prim"),_5C=[0,I_fromBits([2170319554,3688774321]),I_fromBits([26914641,3196943984]),_5B,_5A,_5z],_5D=[0,I_fromBits([2170319554,3688774321]),I_fromBits([26914641,3196943984]),_5C,_g],_5E=function(_5F){return E(_5D);},_5G=unCStr("haste-perch-0.1.0.1"),_5H=unCStr("Haste.Perch"),_5I=unCStr("PerchM"),_5J=[0,I_fromBits([2701112155,1279447594]),I_fromBits([4004215588,1086752342]),_5G,_5H,_5I],_5K=[0,I_fromBits([2701112155,1279447594]),I_fromBits([4004215588,1086752342]),_5J,_g],_5L=function(_5M){return E(_5K);},_5N=function(_5O){var _5P=E(_5O);return _5P[0]==0?[0]:_2l(_5P[1],new T(function(){return _5N(_5P[2]);}));},_5Q=function(_5R,_5S){var _5T=E(_5R);if(!_5T){return [0,_g,_5S];}else{var _5U=E(_5S);if(!_5U[0]){return [0,_g,_g];}else{var _5V=new T(function(){var _5W=_5Q(_5T-1|0,_5U[2]);return [0,_5W[1],_5W[2]];});return [0,[1,_5U[1],new T(function(){return E(E(_5V)[1]);})],new T(function(){return E(E(_5V)[2]);})];}}},_5X=[0,120],_5Y=[0,48],_5Z=function(_60){var _61=new T(function(){var _62=_5Q(8,new T(function(){var _63=md5(toJSStr(E(_60)));return fromJSStr(_63);}));return [0,_62[1],_62[2]];}),_64=parseInt([0,toJSStr([1,_5Y,[1,_5X,new T(function(){return E(E(_61)[1]);})]])]),_65=new T(function(){var _66=_5Q(8,new T(function(){return E(E(_61)[2]);}));return [0,_66[1],_66[2]];}),_67=parseInt([0,toJSStr([1,_5Y,[1,_5X,new T(function(){return E(E(_65)[1]);})]])]),_68=hs_mkWord64(_64,_67),_69=parseInt([0,toJSStr([1,_5Y,[1,_5X,new T(function(){return E(_5Q(8,new T(function(){return E(E(_65)[2]);}))[1]);})]])]),_6a=hs_mkWord64(_69,_69);return [0,_68,_6a];},_6b=function(_6c,_6d){var _6e=E(_6d);return _6e[0]==0?[0]:[1,new T(function(){return A(_6c,[_6e[1]]);}),new T(function(){return _6b(_6c,_6e[2]);})];},_6f=function(_6g,_6h){var _6i=jsShowI(_6g),_6j=md5(_6i);return _2l(fromJSStr(_6j),new T(function(){var _6k=jsShowI(_6h),_6l=md5(_6k);return fromJSStr(_6l);}));},_6m=function(_6n){var _6o=E(_6n);return _6f(_6o[1],_6o[2]);},_6p=function(_6q){var _6r=E(_6q);if(!_6r[0]){return [0];}else{var _6s=E(_6r[1]);return [1,[0,_6s[1],_6s[2]],new T(function(){return _6p(_6r[2]);})];}},_6t=unCStr("Prelude.undefined"),_6u=new T(function(){return err(_6t);}),_6v=function(_6w,_6x){return function(_6y){return E(new T(function(){var _6z=A(_6w,[_6u]),_6A=E(_6z[3]),_6B=_6A[1],_6C=_6A[2],_6D=_2l(_6z[4],[1,new T(function(){return A(_6x,[_6u]);}),_g]);if(!_6D[0]){return [0,_6B,_6C,_6A,_g];}else{var _6E=_5Z(new T(function(){return _5N(_6b(_6m,[1,[0,_6B,_6C],new T(function(){return _6p(_6D);})]));}));return [0,_6E[1],_6E[2],_6A,_6D];}}));};},_6F=new T(function(){return _6v(_5L,_5E);}),_6G=unCStr("value"),_6H=unCStr("onclick"),_6I=unCStr("checked"),_6J=[0,_6I,_g],_6K=[1,_6J,_g],_6L=unCStr("type"),_6M=unCStr("input"),_6N=function(_6O,_){return _4B(_6M,_6O,_);},_6P=function(_6Q,_6R,_6S,_6T,_6U){var _6V=new T(function(){var _6W=new T(function(){return _1v(_6N,[1,[0,_6L,_6R],[1,[0,_1e,_6Q],[1,[0,_6G,_6S],_g]]]);});return !E(_6T)?E(_6W):_1v(_6W,_6K);}),_6X=E(_6U);return _6X[0]==0?E(_6V):_1v(_6V,[1,[0,_6H,_6X[1]],_g]);},_6Y=unCStr("href"),_6Z=[0,97],_70=[1,_6Z,_g],_71=function(_72,_){return _4B(_70,_72,_);},_73=function(_74,_75){var _76=new T(function(){return _1v(_71,[1,[0,_6Y,_74],_g]);});return function(_77,_){var _78=A(_76,[_77,_]),_79=A(_75,[_78,_]);return _78;};},_7a=function(_7b){return _73(_7b,function(_1C,_){return _z(_7b,_1C,_);});},_7c=unCStr("option"),_7d=function(_7e,_){return _4B(_7c,_7e,_);},_7f=unCStr("selected"),_7g=[0,_7f,_g],_7h=[1,_7g,_g],_7i=function(_7j,_7k,_7l){var _7m=new T(function(){return _1v(_7d,[1,[0,_6G,_7j],_g]);}),_7n=function(_7o,_){var _7p=A(_7m,[_7o,_]),_7q=A(_7k,[_7p,_]);return _7p;};return !E(_7l)?E(_7n):_1v(_7n,_7h);},_7r=function(_7s,_7t){return _7i(_7s,function(_1C,_){return _z(_7s,_1C,_);},_7t);},_7u=unCStr("method"),_7v=unCStr("action"),_7w=unCStr("UTF-8"),_7x=unCStr("acceptCharset"),_7y=[0,_7x,_7w],_7z=unCStr("form"),_7A=function(_7B,_){return _4B(_7z,_7B,_);},_7C=function(_7D,_7E,_7F){var _7G=new T(function(){return _1v(_7A,[1,_7y,[1,[0,_7v,_7D],[1,[0,_7u,_7E],_g]]]);});return function(_7H,_){var _7I=A(_7G,[_7H,_]),_7J=A(_7F,[_7I,_]);return _7I;};},_7K=unCStr("select"),_7L=function(_7M,_){return _4B(_7K,_7M,_);},_7N=function(_7O,_7P){var _7Q=new T(function(){return _1v(_7L,[1,[0,_1e,_7O],_g]);});return function(_7R,_){var _7S=A(_7Q,[_7R,_]),_7T=A(_7P,[_7S,_]);return _7S;};},_7U=unCStr("textarea"),_7V=function(_7W,_){return _4B(_7U,_7W,_);},_7X=function(_7Y,_7Z){var _80=new T(function(){return _1v(_7V,[1,[0,_1e,_7Y],_g]);});return function(_81,_){var _82=A(_80,[_81,_]),_83=_z(_7Z,_82,_);return _82;};},_84=unCStr("color:red"),_85=unCStr("style"),_86=[0,_85,_84],_87=[1,_86,_g],_88=[0,98],_89=[1,_88,_g],_8a=function(_8b){return _1v(function(_8c,_){var _8d=_4B(_89,_8c,_),_8e=A(_8b,[_8d,_]);return _8d;},_87);},_8f=function(_8g,_8h,_){var _8i=E(_8g);if(!_8i[0]){return _8h;}else{var _8j=A(_8i[1],[_8h,_]),_8k=_8f(_8i[2],_8h,_);return _8h;}},_8l=function(_8m,_8n,_8o,_){var _8p=A(_8m,[_8o,_]),_8q=A(_8n,[_8o,_]);return _8o;},_8r=[0,_Z,_8l,_8f],_8s=[0,_8r,_6F,_z,_z,_5t,_8a,_73,_7a,_6P,_7X,_7N,_7i,_7r,_7C,_1v],_8t=[0,_3C,_1m],_8u=function(_8v){return E(E(_8v)[1]);},_8w=function(_8x){return E(E(_8x)[1]);},_8y=function(_8z){return E(E(_8z)[2]);},_8A=function(_8B,_8C){var _8D=new T(function(){return A(_8y,[_8B,_8C]);}),_8E=new T(function(){return _8w(_8B);}),_8F=new T(function(){return _43(_8E);}),_8G=new T(function(){return _3D(_8E);});return function(_8H){return A(_8G,[_8D,function(_8I){return A(_8F,[[0,_8I,_8H]]);}]);};},_8J=function(_8K,_8L){return A(_8K,[function(_){return jsFind(toJSStr(E(_8L)));}]);},_8M=[0],_8N=function(_8O){return E(E(_8O)[3]);},_8P=new T(function(){return E(_6u);}),_8Q=new T(function(){return [0,"value"];}),_8R=function(_8S){return E(E(_8S)[6]);},_8T=unCStr("GHC.Types"),_8U=unCStr("[]"),_8V=[0,I_fromBits([4033920485,4128112366]),I_fromBits([786266835,2297333520]),_5B,_8T,_8U],_8W=[0,I_fromBits([4033920485,4128112366]),I_fromBits([786266835,2297333520]),_8V,_g],_8X=function(_8Y){return E(_8W);},_8Z=unCStr("Char"),_90=[0,I_fromBits([3763641161,3907222913]),I_fromBits([1343745632,586881778]),_5B,_8T,_8Z],_91=[0,I_fromBits([3763641161,3907222913]),I_fromBits([1343745632,586881778]),_90,_g],_92=function(_93){return E(_91);},_94=new T(function(){return _6v(_8X,_92);}),_95=new T(function(){return A(_94,[_6u]);}),_96=function(_97){return E(E(_97)[1]);},_98=[0,0],_99=[0,32],_9a=[0,10],_9b=function(_9c){var _9d=E(_9c);if(!_9d[0]){return E(_1m);}else{var _9e=_9d[1],_9f=E(_9d[2]);if(!_9f[0]){return _9g(_9a,_9e);}else{var _9h=new T(function(){return _9b(_9f);}),_9i=new T(function(){return _9g(_9a,_9e);});return function(_9j){return A(_9i,[[1,_99,new T(function(){return A(_9h,[_9j]);})]]);};}}},_9k=unCStr("->"),_9l=[1,_9k,_g],_9m=[1,_8T,_9l],_9n=[1,_5B,_9m],_9o=[0,32],_9p=function(_9q){var _9r=E(_9q);if(!_9r[0]){return [0];}else{var _9s=_9r[1],_9t=E(_9r[2]);return _9t[0]==0?E(_9s):_2l(_9s,[1,_9o,new T(function(){return _9p(_9t);})]);}},_9u=new T(function(){return _9p(_9n);}),_9v=new T(function(){var _9w=_5Z(_9u);return [0,_9w[1],_9w[2],_5B,_8T,_9k];}),_9x=function(_9y,_9z){var _9A=E(_9y);return _9A[0]==0?E(_9z):A(_9A[1],[new T(function(){return _9x(_9A[2],_9z);})]);},_9B=[0,I_fromBits([4033920485,4128112366]),I_fromBits([786266835,2297333520])],_9C=[1,_5D,_g],_9D=function(_9E){var _9F=E(_9E);if(!_9F[0]){return [0];}else{var _9G=E(_9F[1]);return [1,[0,_9G[1],_9G[2]],new T(function(){return _9D(_9F[2]);})];}},_9H=new T(function(){var _9I=_2l(_g,_9C);if(!_9I[0]){return E(_8V);}else{var _9J=_5Z(new T(function(){return _5N(_6b(_6m,[1,_9B,new T(function(){return _9D(_9I);})]));}));return E(_8V);}}),_9K=[0,40],_9L=function(_9M){return _9g(_9a,_9M);},_9N=[0,8],_9O=unCStr(" -> "),_9P=[0,9],_9Q=[0,93],_9R=[0,91],_9S=[0,41],_9T=[0,44],_9U=function(_9M){return [1,_9T,_9M];},_9V=function(_9W,_9X){var _9Y=E(_9X);return _9Y[0]==0?[0]:[1,_9W,[1,_9Y[1],new T(function(){return _9V(_9W,_9Y[2]);})]];},_9g=function(_9Z,_a0){var _a1=E(_a0),_a2=_a1[3],_a3=E(_a1[4]);if(!_a3[0]){return function(_a4){return _2l(E(_a2)[5],_a4);};}else{var _a5=_a3[1],_a6=new T(function(){var _a7=E(_a2)[5],_a8=new T(function(){return _9b(_a3);}),_a9=new T(function(){return E(_9Z)[1]<=9?function(_aa){return _2l(_a7,[1,_99,new T(function(){return A(_a8,[_aa]);})]);}:function(_ab){return [1,_4h,new T(function(){return _2l(_a7,[1,_99,new T(function(){return A(_a8,[[1,_4g,_ab]]);})]);})];};}),_ac=E(_a7);if(!_ac[0]){return E(_a9);}else{if(E(E(_ac[1])[1])==40){var _ad=E(_ac[2]);return _ad[0]==0?E(_a9):E(E(_ad[1])[1])==44?function(_ae){return [1,_9K,new T(function(){return A(new T(function(){var _af=_6b(_9L,_a3);if(!_af[0]){return E(_1m);}else{var _ag=new T(function(){return _9V(_9U,_af[2]);});return function(_ah){return _9x([1,_af[1],_ag],_ah);};}}),[[1,_9S,_ae]]);})];}:E(_a9);}else{return E(_a9);}}}),_ai=E(_a3[2]);if(!_ai[0]){var _aj=E(_a2),_ak=E(_9H),_al=hs_eqWord64(_aj[1],_ak[1]);if(!E(_al)){return E(_a6);}else{var _am=hs_eqWord64(_aj[2],_ak[2]);if(!E(_am)){return E(_a6);}else{var _an=new T(function(){return _9g(_98,_a5);});return function(_ao){return [1,_9R,new T(function(){return A(_an,[[1,_9Q,_ao]]);})];};}}}else{if(!E(_ai[2])[0]){var _ap=E(_a2),_aq=E(_9v),_ar=hs_eqWord64(_ap[1],_aq[1]);if(!E(_ar)){return E(_a6);}else{var _as=hs_eqWord64(_ap[2],_aq[2]);if(!E(_as)){return E(_a6);}else{var _at=new T(function(){return _9g(_9N,_ai[1]);}),_au=new T(function(){return _9g(_9P,_a5);});return E(_9Z)[1]<=8?function(_av){return A(_au,[new T(function(){return _2l(_9O,new T(function(){return A(_at,[_av]);}));})]);}:function(_aw){return [1,_4h,new T(function(){return A(_au,[new T(function(){return _2l(_9O,new T(function(){return A(_at,[[1,_4g,_aw]]);}));})]);})];};}}}else{return E(_a6);}}}},_ax=function(_ay,_az,_aA,_aB,_aC,_aD){var _aE=E(_ay),_aF=_aE[1],_aG=_aE[3],_aH=new T(function(){return A(_aG,[_8M]);}),_aI=new T(function(){return _8N(_aC);}),_aJ=new T(function(){return _8R(_aC);}),_aK=new T(function(){return unAppCStr("\" as type ",new T(function(){return A(_9g,[_98,A(_aA,[_8P]),_g]);}));}),_aL=new T(function(){return A(_96,[_aB,_8]);});return A(_aF,[new T(function(){return _8J(_az,_aD);}),function(_aM){var _aN=E(_aM);return _aN[0]==0?E(_aH):A(_aF,[new T(function(){return A(_az,[function(_){var _aO=jsGet(E(_aN[1])[1],E(_8Q)[1]);return [1,new T(function(){return fromJSStr(_aO);})];}]);}),function(_aP){var _aQ=E(_aP);if(!_aQ[0]){return E(_aH);}else{var _aR=_aQ[1];if(!E(new T(function(){var _aS=A(_aA,[_8P]),_aT=E(_95),_aU=hs_eqWord64(_aS[1],_aT[1]);if(!E(_aU)){return false;}else{var _aV=hs_eqWord64(_aS[2],_aT[2]);return E(_aV)==0?false:true;}}))){var _aW=new T(function(){return A(_aG,[[1,_aR,new T(function(){return A(_aJ,[new T(function(){return A(_aI,[new T(function(){return unAppCStr("can\'t read \"",new T(function(){return _2l(_aR,_aK);}));})]);})]);})]]);}),_aX=A(_aL,[_aR]);if(!_aX[0]){return E(_aW);}else{var _aY=E(_aX[1]);return E(_aY[2])[0]==0?E(_aX[2])[0]==0?A(_aG,[[2,_aY[1]]]):E(_aW):E(_aW);}}else{return A(_aG,[[2,_aR]]);}}}]);}]);},_aZ=1,_b0=function(_b1){return E(E(_b1)[9]);},_b2=function(_b3,_b4){return A(_43,[_b3,[0,_b4,_b4]]);},_b5=function(_b6){return E(E(_b6)[2]);},_b7=function(_b8,_b9,_ba){return A(_43,[_b8,[0,_1f,_b9]]);},_bb=function(_bc){return E(E(_bc)[2]);},_bd=function(_be,_bf,_bg,_bh,_bi){var _bj=new T(function(){return _8u(_be);}),_bk=new T(function(){return _b5(_bj);}),_bl=new T(function(){return _8w(_bf);}),_bm=new T(function(){return _45(_bl);}),_bn=new T(function(){return _4n([0,coercionToken],_bm,function(_bo){return _b2(_bl,_bo);},function(_bp,_bq){return _b7(_bl,_bp,_bq);});}),_br=new T(function(){return _43(_bl);}),_bs=new T(function(){return _3D(_bl);}),_bt=new T(function(){return _43(_bl);}),_bu=new T(function(){return _3D(_bl);}),_bv=new T(function(){return _43(_bl);}),_bw=new T(function(){return _3D(_bl);}),_bx=new T(function(){return _43(_bl);}),_by=new T(function(){return _3D(_bl);}),_bz=new T(function(){return _bb(_bh);}),_bA=new T(function(){return _b0(_be);});return function(_bB,_bC,_bD){return function(_bE){return A(_by,[new T(function(){var _bF=E(_bB);return _bF[0]==0?A(_bn,[_bE]):A(_bx,[[0,_bF[1],_bE]]);}),function(_bG){var _bH=new T(function(){return E(E(_bG)[1]);}),_bI=new T(function(){return _ax(_bm,function(_bJ){return _8A(_bf,_bJ);},_bg,_bi,_be,_bH);}),_bK=new T(function(){return A(_bA,[_bH,_bC,new T(function(){var _bL=E(_bD);if(!_bL[0]){return [0];}else{var _bM=_bL[1],_bN=_25(_bg,_94,_bM);return _bN[0]==0?A(_bz,[_bM]):E(_bN[1]);}}),_0,_9]);});return A(_bw,[new T(function(){var _bO=new T(function(){return E(E(_bG)[2]);});return A(_bv,[[0,_bO,_bO]]);}),function(_bP){return A(_bu,[new T(function(){return A(_bt,[[0,_1f,new T(function(){var _bQ=E(E(_bP)[1]);return [0,_bQ[1],_bQ[2],_aZ,_bQ[4],_bQ[5],_bQ[6]];})]]);}),function(_bR){return A(_bs,[new T(function(){return A(_bI,[new T(function(){return E(E(_bR)[2]);})]);}),function(_bS){var _bT=E(_bS),_bU=_bT[2],_bV=E(_bT[1]);switch(_bV[0]){case 0:return A(_br,[[0,[0,_bK,_9],_bU]]);case 1:return A(_br,[[0,[0,new T(function(){return A(_bk,[new T(function(){return A(_bA,[_bH,_bC,_bV[1],_0,_9]);}),_bV[2]]);}),_9],_bU]]);default:var _bW=_bV[1];return A(_br,[[0,[0,new T(function(){return A(_bA,[_bH,_bC,new T(function(){var _bX=_25(_bg,_94,_bW);return _bX[0]==0?A(_bz,[_bW]):E(_bX[1]);}),_0,_9]);}),[1,_bW]],_bU]]);}}]);}]);}]);}]);};};},_bY=unCStr("base"),_bZ=unCStr("Control.Exception.Base"),_c0=unCStr("PatternMatchFail"),_c1=[0,I_fromBits([18445595,3739165398]),I_fromBits([52003073,3246954884]),_bY,_bZ,_c0],_c2=[0,I_fromBits([18445595,3739165398]),I_fromBits([52003073,3246954884]),_c1,_g],_c3=function(_c4){return E(_c2);},_c5=function(_c6){var _c7=E(_c6);return _25(_21(_c7[1]),_c3,_c7[2]);},_c8=function(_c9){return E(E(_c9)[1]);},_ca=function(_cb,_cc){return _2l(E(_cb)[1],_cc);},_cd=function(_ce,_cf){return _3b(_ca,_ce,_cf);},_cg=function(_ch,_ci,_cj){return _2l(E(_ci)[1],_cj);},_ck=[0,_cg,_c8,_cd],_cl=new T(function(){return [0,_c3,_ck,_cm,_c5];}),_cm=function(_cn){return [0,_cl,_cn];},_co=unCStr("Non-exhaustive patterns in"),_cp=function(_cq,_cr){return die(new T(function(){return A(_cr,[_cq]);}));},_cs=function(_ct,_cu){var _cv=E(_cu);if(!_cv[0]){return [0,_g,_g];}else{var _cw=_cv[1];if(!A(_ct,[_cw])){return [0,_g,_cv];}else{var _cx=new T(function(){var _cy=_cs(_ct,_cv[2]);return [0,_cy[1],_cy[2]];});return [0,[1,_cw,new T(function(){return E(E(_cx)[1]);})],new T(function(){return E(E(_cx)[2]);})];}}},_cz=[0,32],_cA=[0,10],_cB=[1,_cA,_g],_cC=function(_cD){return E(E(_cD)[1])==124?false:true;},_cE=function(_cF,_cG){var _cH=_cs(_cC,unCStr(_cF)),_cI=_cH[1],_cJ=function(_cK,_cL){return _2l(_cK,new T(function(){return unAppCStr(": ",new T(function(){return _2l(_cG,new T(function(){return _2l(_cL,_cB);}));}));}));},_cM=E(_cH[2]);return _cM[0]==0?_cJ(_cI,_g):E(E(_cM[1])[1])==124?_cJ(_cI,[1,_cz,_cM[2]]):_cJ(_cI,_g);},_cN=function(_cO){return _cp([0,new T(function(){return _cE(_cO,_co);})],_cm);},_cP=new T(function(){return _cN("Text\\ParserCombinators\\ReadP.hs:(134,3)-(157,60)|function mplus");}),_cQ=function(_cR,_cS){while(1){var _cT=(function(_cU,_cV){var _cW=E(_cU);switch(_cW[0]){case 0:var _cX=E(_cV);if(!_cX[0]){return [0];}else{_cR=A(_cW[1],[_cX[1]]);_cS=_cX[2];return null;}break;case 1:var _cY=A(_cW[1],[_cV]),_cZ=_cV;_cR=_cY;_cS=_cZ;return null;case 2:return [0];case 3:return [1,[0,_cW[1],_cV],new T(function(){return _cQ(_cW[2],_cV);})];default:return E(_cW[1]);}})(_cR,_cS);if(_cT!=null){return _cT;}}},_d0=function(_d1,_d2){var _d3=new T(function(){var _d4=E(_d2);if(_d4[0]==3){return [3,_d4[1],new T(function(){return _d0(_d1,_d4[2]);})];}else{var _d5=E(_d1);if(_d5[0]==2){return E(_d4);}else{var _d6=E(_d4);if(_d6[0]==2){return E(_d5);}else{var _d7=new T(function(){var _d8=E(_d6);if(_d8[0]==4){return [1,function(_d9){return [4,new T(function(){return _2l(_cQ(_d5,_d9),_d8[1]);})];}];}else{var _da=E(_d5);if(_da[0]==1){var _db=_da[1],_dc=E(_d8);return _dc[0]==0?[1,function(_dd){return _d0(A(_db,[_dd]),_dc);}]:[1,function(_de){return _d0(A(_db,[_de]),new T(function(){return A(_dc[1],[_de]);}));}];}else{var _df=E(_d8);return _df[0]==0?E(_cP):[1,function(_dg){return _d0(_da,new T(function(){return A(_df[1],[_dg]);}));}];}}}),_dh=E(_d5);switch(_dh[0]){case 1:var _di=E(_d6);return _di[0]==4?[1,function(_dj){return [4,new T(function(){return _2l(_cQ(A(_dh[1],[_dj]),_dj),_di[1]);})];}]:E(_d7);case 4:var _dk=_dh[1],_dl=E(_d6);switch(_dl[0]){case 0:return [1,function(_dm){return [4,new T(function(){return _2l(_dk,new T(function(){return _cQ(_dl,_dm);}));})];}];case 1:return [1,function(_dn){return [4,new T(function(){return _2l(_dk,new T(function(){return _cQ(A(_dl[1],[_dn]),_dn);}));})];}];default:return [4,new T(function(){return _2l(_dk,_dl[1]);})];}break;default:return E(_d7);}}}}}),_do=E(_d1);switch(_do[0]){case 0:var _dp=E(_d2);return _dp[0]==0?[0,function(_dq){return _d0(A(_do[1],[_dq]),new T(function(){return A(_dp[1],[_dq]);}));}]:E(_d3);case 3:return [3,_do[1],new T(function(){return _d0(_do[2],_d2);})];default:return E(_d3);}},_dr=function(_ds,_dt){return E(_ds)[1]!=E(_dt)[1];},_du=function(_dv,_dw){return E(_dv)[1]==E(_dw)[1];},_dx=[0,_du,_dr],_dy=function(_dz){return E(E(_dz)[1]);},_dA=function(_dB,_dC,_dD){while(1){var _dE=E(_dC);if(!_dE[0]){return E(_dD)[0]==0?true:false;}else{var _dF=E(_dD);if(!_dF[0]){return false;}else{if(!A(_dy,[_dB,_dE[1],_dF[1]])){return false;}else{_dC=_dE[2];_dD=_dF[2];continue;}}}}},_dG=function(_dH,_dI,_dJ){return !_dA(_dH,_dI,_dJ)?true:false;},_dK=function(_dL){return [0,function(_dM,_dN){return _dA(_dL,_dM,_dN);},function(_dM,_dN){return _dG(_dL,_dM,_dN);}];},_dO=new T(function(){return _dK(_dx);}),_dP=function(_dQ,_dR){var _dS=E(_dQ);switch(_dS[0]){case 0:return [0,function(_dT){return _dP(A(_dS[1],[_dT]),_dR);}];case 1:return [1,function(_dU){return _dP(A(_dS[1],[_dU]),_dR);}];case 2:return [2];case 3:return _d0(A(_dR,[_dS[1]]),new T(function(){return _dP(_dS[2],_dR);}));default:var _dV=function(_dW){var _dX=E(_dW);if(!_dX[0]){return [0];}else{var _dY=E(_dX[1]);return _2l(_cQ(A(_dR,[_dY[1]]),_dY[2]),new T(function(){return _dV(_dX[2]);}));}},_dZ=_dV(_dS[1]);return _dZ[0]==0?[2]:[4,_dZ];}},_e0=[2],_e1=function(_e2){return [3,_e2,_e0];},_e3=function(_e4,_e5){var _e6=E(_e4);if(!_e6){return A(_e5,[_1f]);}else{var _e7=new T(function(){return _e3(_e6-1|0,_e5);});return [0,function(_e8){return E(_e7);}];}},_e9=function(_ea,_eb,_ec){var _ed=new T(function(){return A(_ea,[_e1]);});return [1,function(_ee){return A(function(_ef,_eg,_eh){while(1){var _ei=(function(_ej,_ek,_el){var _em=E(_ej);switch(_em[0]){case 0:var _en=E(_ek);if(!_en[0]){return E(_eb);}else{_ef=A(_em[1],[_en[1]]);_eg=_en[2];var _eo=_el+1|0;_eh=_eo;return null;}break;case 1:var _ep=A(_em[1],[_ek]),_eq=_ek,_eo=_el;_ef=_ep;_eg=_eq;_eh=_eo;return null;case 2:return E(_eb);case 3:return function(_er){var _es=new T(function(){return _dP(_em,_er);});return _e3(_el,function(_et){return E(_es);});};default:return function(_ah){return _dP(_em,_ah);};}})(_ef,_eg,_eh);if(_ei!=null){return _ei;}}},[_ed,_ee,0,_ec]);}];},_eu=[6],_ev=unCStr("valDig: Bad base"),_ew=new T(function(){return err(_ev);}),_ex=function(_ey,_ez){var _eA=function(_eB,_eC){var _eD=E(_eB);if(!_eD[0]){var _eE=new T(function(){return A(_eC,[_g]);});return function(_eF){return A(_eF,[_eE]);};}else{var _eG=E(_eD[1])[1],_eH=function(_eI){var _eJ=new T(function(){return _eA(_eD[2],function(_eK){return A(_eC,[[1,_eI,_eK]]);});});return function(_eL){var _eM=new T(function(){return A(_eJ,[_eL]);});return [0,function(_eN){return E(_eM);}];};};switch(E(E(_ey)[1])){case 8:if(48>_eG){var _eO=new T(function(){return A(_eC,[_g]);});return function(_eP){return A(_eP,[_eO]);};}else{if(_eG>55){var _eQ=new T(function(){return A(_eC,[_g]);});return function(_eR){return A(_eR,[_eQ]);};}else{return _eH([0,_eG-48|0]);}}break;case 10:if(48>_eG){var _eS=new T(function(){return A(_eC,[_g]);});return function(_eT){return A(_eT,[_eS]);};}else{if(_eG>57){var _eU=new T(function(){return A(_eC,[_g]);});return function(_eV){return A(_eV,[_eU]);};}else{return _eH([0,_eG-48|0]);}}break;case 16:var _eW=new T(function(){return 97>_eG?65>_eG?[0]:_eG>70?[0]:[1,[0,(_eG-65|0)+10|0]]:_eG>102?65>_eG?[0]:_eG>70?[0]:[1,[0,(_eG-65|0)+10|0]]:[1,[0,(_eG-97|0)+10|0]];});if(48>_eG){var _eX=E(_eW);if(!_eX[0]){var _eY=new T(function(){return A(_eC,[_g]);});return function(_eZ){return A(_eZ,[_eY]);};}else{return _eH(_eX[1]);}}else{if(_eG>57){var _f0=E(_eW);if(!_f0[0]){var _f1=new T(function(){return A(_eC,[_g]);});return function(_f2){return A(_f2,[_f1]);};}else{return _eH(_f0[1]);}}else{return _eH([0,_eG-48|0]);}}break;default:return E(_ew);}}};return [1,function(_f3){return A(_eA,[_f3,_1m,function(_f4){var _f5=E(_f4);return _f5[0]==0?[2]:A(_ez,[_f5]);}]);}];},_f6=[0,10],_f7=[0,1],_f8=[0,2147483647],_f9=function(_fa,_fb){while(1){var _fc=E(_fa);if(!_fc[0]){var _fd=_fc[1],_fe=E(_fb);if(!_fe[0]){var _ff=_fe[1],_fg=addC(_fd,_ff);if(!E(_fg[2])){return [0,_fg[1]];}else{_fa=[1,I_fromInt(_fd)];_fb=[1,I_fromInt(_ff)];continue;}}else{_fa=[1,I_fromInt(_fd)];_fb=_fe;continue;}}else{var _fh=E(_fb);if(!_fh[0]){_fa=_fc;_fb=[1,I_fromInt(_fh[1])];continue;}else{return [1,I_add(_fc[1],_fh[1])];}}}},_fi=new T(function(){return _f9(_f8,_f7);}),_fj=function(_fk){var _fl=E(_fk);if(!_fl[0]){var _fm=E(_fl[1]);return _fm==(-2147483648)?E(_fi):[0, -_fm];}else{return [1,I_negate(_fl[1])];}},_fn=[0,10],_fo=[0,0],_fp=function(_fq,_fr){while(1){var _fs=E(_fq);if(!_fs[0]){var _ft=_fs[1],_fu=E(_fr);if(!_fu[0]){var _fv=_fu[1];if(!(imul(_ft,_fv)|0)){return [0,imul(_ft,_fv)|0];}else{_fq=[1,I_fromInt(_ft)];_fr=[1,I_fromInt(_fv)];continue;}}else{_fq=[1,I_fromInt(_ft)];_fr=_fu;continue;}}else{var _fw=E(_fr);if(!_fw[0]){_fq=_fs;_fr=[1,I_fromInt(_fw[1])];continue;}else{return [1,I_mul(_fs[1],_fw[1])];}}}},_fx=function(_fy,_fz,_fA){while(1){var _fB=E(_fA);if(!_fB[0]){return E(_fz);}else{var _fC=_f9(_fp(_fz,_fy),_fB[1]);_fA=_fB[2];_fz=_fC;continue;}}},_fD=function(_fE){var _fF=new T(function(){return _d0(_d0([0,function(_fG){return E(E(_fG)[1])==45?_ex(_f6,function(_fH){return A(_fE,[[1,new T(function(){return _fj(_fx(_fn,_fo,_fH));})]]);}):[2];}],[0,function(_fI){return E(E(_fI)[1])==43?_ex(_f6,function(_fJ){return A(_fE,[[1,new T(function(){return _fx(_fn,_fo,_fJ);})]]);}):[2];}]),new T(function(){return _ex(_f6,function(_fK){return A(_fE,[[1,new T(function(){return _fx(_fn,_fo,_fK);})]]);});}));});return _d0([0,function(_fL){return E(E(_fL)[1])==101?E(_fF):[2];}],[0,function(_fM){return E(E(_fM)[1])==69?E(_fF):[2];}]);},_fN=function(_fO){return A(_fO,[_9]);},_fP=function(_fQ){return A(_fQ,[_9]);},_fR=function(_fS){var _fT=new T(function(){return _ex(_f6,function(_fU){return A(_fS,[[1,_fU]]);});});return [0,function(_fV){return E(E(_fV)[1])==46?E(_fT):[2];}];},_fW=function(_fX){return _ex(_f6,function(_fY){return _e9(_fR,_fN,function(_fZ){return _e9(_fD,_fP,function(_g0){return A(_fX,[[5,[1,_fY,_fZ,_g0]]]);});});});},_g1=function(_g2,_g3,_g4){while(1){var _g5=E(_g4);if(!_g5[0]){return false;}else{if(!A(_dy,[_g2,_g3,_g5[1]])){_g4=_g5[2];continue;}else{return true;}}}},_g6=unCStr("!@#$%&*+./<=>?\\^|:-~"),_g7=function(_g8){return _g1(_dx,_g8,_g6);},_g9=[0,8],_ga=[0,16],_gb=function(_gc){var _gd=new T(function(){return _ex(_ga,function(_ge){return A(_gc,[[5,[0,_ga,_ge]]]);});}),_gf=new T(function(){return _ex(_g9,function(_gg){return A(_gc,[[5,[0,_g9,_gg]]]);});}),_gh=new T(function(){return _ex(_ga,function(_gi){return A(_gc,[[5,[0,_ga,_gi]]]);});}),_gj=new T(function(){return _ex(_g9,function(_gk){return A(_gc,[[5,[0,_g9,_gk]]]);});});return [0,function(_gl){return E(E(_gl)[1])==48?E([0,function(_gm){switch(E(E(_gm)[1])){case 79:return E(_gj);case 88:return E(_gh);case 111:return E(_gf);case 120:return E(_gd);default:return [2];}}]):[2];}];},_gn=true,_go=function(_gp){var _gq=new T(function(){return A(_gp,[_ga]);}),_gr=new T(function(){return A(_gp,[_g9]);}),_gs=new T(function(){return A(_gp,[_ga]);}),_gt=new T(function(){return A(_gp,[_g9]);});return [0,function(_gu){switch(E(E(_gu)[1])){case 79:return E(_gt);case 88:return E(_gs);case 111:return E(_gr);case 120:return E(_gq);default:return [2];}}];},_gv=function(_gw){return A(_gw,[_f6]);},_gx=function(_gy){return err(unAppCStr("Prelude.chr: bad argument: ",new T(function(){return _4i(9,_gy,_g);})));},_gz=function(_gA){var _gB=E(_gA);return _gB[0]==0?E(_gB[1]):I_toInt(_gB[1]);},_gC=function(_gD,_gE){var _gF=E(_gD);if(!_gF[0]){var _gG=_gF[1],_gH=E(_gE);return _gH[0]==0?_gG<=_gH[1]:I_compareInt(_gH[1],_gG)>=0;}else{var _gI=_gF[1],_gJ=E(_gE);return _gJ[0]==0?I_compareInt(_gI,_gJ[1])<=0:I_compare(_gI,_gJ[1])<=0;}},_gK=function(_gL){return [2];},_gM=function(_gN){var _gO=E(_gN);if(!_gO[0]){return E(_gK);}else{var _gP=_gO[1],_gQ=E(_gO[2]);if(!_gQ[0]){return E(_gP);}else{var _gR=new T(function(){return _gM(_gQ);});return function(_gS){return _d0(A(_gP,[_gS]),new T(function(){return A(_gR,[_gS]);}));};}}},_gT=unCStr("NUL"),_gU=function(_gV){return [2];},_gW=function(_gX){return _gU(_gX);},_gY=function(_gZ,_h0){var _h1=function(_h2,_h3){var _h4=E(_h2);if(!_h4[0]){return function(_h5){return A(_h5,[_gZ]);};}else{var _h6=E(_h3);if(!_h6[0]){return E(_gU);}else{if(E(_h4[1])[1]!=E(_h6[1])[1]){return E(_gW);}else{var _h7=new T(function(){return _h1(_h4[2],_h6[2]);});return function(_h8){var _h9=new T(function(){return A(_h7,[_h8]);});return [0,function(_ha){return E(_h9);}];};}}}};return [1,function(_hb){return A(_h1,[_gZ,_hb,_h0]);}];},_hc=[0,0],_hd=function(_he){var _hf=new T(function(){return A(_he,[_hc]);});return _gY(_gT,function(_hg){return E(_hf);});},_hh=unCStr("STX"),_hi=[0,2],_hj=function(_hk){var _hl=new T(function(){return A(_hk,[_hi]);});return _gY(_hh,function(_hm){return E(_hl);});},_hn=unCStr("ETX"),_ho=[0,3],_hp=function(_hq){var _hr=new T(function(){return A(_hq,[_ho]);});return _gY(_hn,function(_hs){return E(_hr);});},_ht=unCStr("EOT"),_hu=[0,4],_hv=function(_hw){var _hx=new T(function(){return A(_hw,[_hu]);});return _gY(_ht,function(_hy){return E(_hx);});},_hz=unCStr("ENQ"),_hA=[0,5],_hB=function(_hC){var _hD=new T(function(){return A(_hC,[_hA]);});return _gY(_hz,function(_hE){return E(_hD);});},_hF=unCStr("ACK"),_hG=[0,6],_hH=function(_hI){var _hJ=new T(function(){return A(_hI,[_hG]);});return _gY(_hF,function(_hK){return E(_hJ);});},_hL=unCStr("BEL"),_hM=[0,7],_hN=function(_hO){var _hP=new T(function(){return A(_hO,[_hM]);});return _gY(_hL,function(_hQ){return E(_hP);});},_hR=unCStr("BS"),_hS=[0,8],_hT=function(_hU){var _hV=new T(function(){return A(_hU,[_hS]);});return _gY(_hR,function(_hW){return E(_hV);});},_hX=unCStr("HT"),_hY=[0,9],_hZ=function(_i0){var _i1=new T(function(){return A(_i0,[_hY]);});return _gY(_hX,function(_i2){return E(_i1);});},_i3=unCStr("LF"),_i4=[0,10],_i5=function(_i6){var _i7=new T(function(){return A(_i6,[_i4]);});return _gY(_i3,function(_i8){return E(_i7);});},_i9=unCStr("VT"),_ia=[0,11],_ib=function(_ic){var _id=new T(function(){return A(_ic,[_ia]);});return _gY(_i9,function(_ie){return E(_id);});},_if=unCStr("FF"),_ig=[0,12],_ih=function(_ii){var _ij=new T(function(){return A(_ii,[_ig]);});return _gY(_if,function(_ik){return E(_ij);});},_il=unCStr("CR"),_im=[0,13],_in=function(_io){var _ip=new T(function(){return A(_io,[_im]);});return _gY(_il,function(_iq){return E(_ip);});},_ir=unCStr("SI"),_is=[0,15],_it=function(_iu){var _iv=new T(function(){return A(_iu,[_is]);});return _gY(_ir,function(_iw){return E(_iv);});},_ix=unCStr("DLE"),_iy=[0,16],_iz=function(_iA){var _iB=new T(function(){return A(_iA,[_iy]);});return _gY(_ix,function(_iC){return E(_iB);});},_iD=unCStr("DC1"),_iE=[0,17],_iF=function(_iG){var _iH=new T(function(){return A(_iG,[_iE]);});return _gY(_iD,function(_iI){return E(_iH);});},_iJ=unCStr("DC2"),_iK=[0,18],_iL=function(_iM){var _iN=new T(function(){return A(_iM,[_iK]);});return _gY(_iJ,function(_iO){return E(_iN);});},_iP=unCStr("DC3"),_iQ=[0,19],_iR=function(_iS){var _iT=new T(function(){return A(_iS,[_iQ]);});return _gY(_iP,function(_iU){return E(_iT);});},_iV=unCStr("DC4"),_iW=[0,20],_iX=function(_iY){var _iZ=new T(function(){return A(_iY,[_iW]);});return _gY(_iV,function(_j0){return E(_iZ);});},_j1=unCStr("NAK"),_j2=[0,21],_j3=function(_j4){var _j5=new T(function(){return A(_j4,[_j2]);});return _gY(_j1,function(_j6){return E(_j5);});},_j7=unCStr("SYN"),_j8=[0,22],_j9=function(_ja){var _jb=new T(function(){return A(_ja,[_j8]);});return _gY(_j7,function(_jc){return E(_jb);});},_jd=unCStr("ETB"),_je=[0,23],_jf=function(_jg){var _jh=new T(function(){return A(_jg,[_je]);});return _gY(_jd,function(_ji){return E(_jh);});},_jj=unCStr("CAN"),_jk=[0,24],_jl=function(_jm){var _jn=new T(function(){return A(_jm,[_jk]);});return _gY(_jj,function(_jo){return E(_jn);});},_jp=unCStr("EM"),_jq=[0,25],_jr=function(_js){var _jt=new T(function(){return A(_js,[_jq]);});return _gY(_jp,function(_ju){return E(_jt);});},_jv=unCStr("SUB"),_jw=[0,26],_jx=function(_jy){var _jz=new T(function(){return A(_jy,[_jw]);});return _gY(_jv,function(_jA){return E(_jz);});},_jB=unCStr("ESC"),_jC=[0,27],_jD=function(_jE){var _jF=new T(function(){return A(_jE,[_jC]);});return _gY(_jB,function(_jG){return E(_jF);});},_jH=unCStr("FS"),_jI=[0,28],_jJ=function(_jK){var _jL=new T(function(){return A(_jK,[_jI]);});return _gY(_jH,function(_jM){return E(_jL);});},_jN=unCStr("GS"),_jO=[0,29],_jP=function(_jQ){var _jR=new T(function(){return A(_jQ,[_jO]);});return _gY(_jN,function(_jS){return E(_jR);});},_jT=unCStr("RS"),_jU=[0,30],_jV=function(_jW){var _jX=new T(function(){return A(_jW,[_jU]);});return _gY(_jT,function(_jY){return E(_jX);});},_jZ=unCStr("US"),_k0=[0,31],_k1=function(_k2){var _k3=new T(function(){return A(_k2,[_k0]);});return _gY(_jZ,function(_k4){return E(_k3);});},_k5=unCStr("SP"),_k6=[0,32],_k7=function(_k8){var _k9=new T(function(){return A(_k8,[_k6]);});return _gY(_k5,function(_ka){return E(_k9);});},_kb=unCStr("DEL"),_kc=[0,127],_kd=function(_ke){var _kf=new T(function(){return A(_ke,[_kc]);});return _gY(_kb,function(_kg){return E(_kf);});},_kh=[1,_kd,_g],_ki=[1,_k7,_kh],_kj=[1,_k1,_ki],_kk=[1,_jV,_kj],_kl=[1,_jP,_kk],_km=[1,_jJ,_kl],_kn=[1,_jD,_km],_ko=[1,_jx,_kn],_kp=[1,_jr,_ko],_kq=[1,_jl,_kp],_kr=[1,_jf,_kq],_ks=[1,_j9,_kr],_kt=[1,_j3,_ks],_ku=[1,_iX,_kt],_kv=[1,_iR,_ku],_kw=[1,_iL,_kv],_kx=[1,_iF,_kw],_ky=[1,_iz,_kx],_kz=[1,_it,_ky],_kA=[1,_in,_kz],_kB=[1,_ih,_kA],_kC=[1,_ib,_kB],_kD=[1,_i5,_kC],_kE=[1,_hZ,_kD],_kF=[1,_hT,_kE],_kG=[1,_hN,_kF],_kH=[1,_hH,_kG],_kI=[1,_hB,_kH],_kJ=[1,_hv,_kI],_kK=[1,_hp,_kJ],_kL=[1,_hj,_kK],_kM=[1,_hd,_kL],_kN=unCStr("SOH"),_kO=[0,1],_kP=function(_kQ){var _kR=new T(function(){return A(_kQ,[_kO]);});return _gY(_kN,function(_kS){return E(_kR);});},_kT=unCStr("SO"),_kU=[0,14],_kV=function(_kW){var _kX=new T(function(){return A(_kW,[_kU]);});return _gY(_kT,function(_kY){return E(_kX);});},_kZ=function(_l0){return _e9(_kP,_kV,_l0);},_l1=[1,_kZ,_kM],_l2=new T(function(){return _gM(_l1);}),_l3=[0,1114111],_l4=[0,34],_l5=[0,_l4,_gn],_l6=[0,39],_l7=[0,_l6,_gn],_l8=[0,92],_l9=[0,_l8,_gn],_la=[0,_hM,_gn],_lb=[0,_hS,_gn],_lc=[0,_ig,_gn],_ld=[0,_i4,_gn],_le=[0,_im,_gn],_lf=[0,_hY,_gn],_lg=[0,_ia,_gn],_lh=[0,_hc,_gn],_li=[0,_kO,_gn],_lj=[0,_hi,_gn],_lk=[0,_ho,_gn],_ll=[0,_hu,_gn],_lm=[0,_hA,_gn],_ln=[0,_hG,_gn],_lo=[0,_hM,_gn],_lp=[0,_hS,_gn],_lq=[0,_hY,_gn],_lr=[0,_i4,_gn],_ls=[0,_ia,_gn],_lt=[0,_ig,_gn],_lu=[0,_im,_gn],_lv=[0,_kU,_gn],_lw=[0,_is,_gn],_lx=[0,_iy,_gn],_ly=[0,_iE,_gn],_lz=[0,_iK,_gn],_lA=[0,_iQ,_gn],_lB=[0,_iW,_gn],_lC=[0,_j2,_gn],_lD=[0,_j8,_gn],_lE=[0,_je,_gn],_lF=[0,_jk,_gn],_lG=[0,_jq,_gn],_lH=[0,_jw,_gn],_lI=[0,_jC,_gn],_lJ=[0,_jI,_gn],_lK=[0,_jO,_gn],_lL=[0,_jU,_gn],_lM=[0,_k0,_gn],_lN=function(_lO){return [0,_lO];},_lP=function(_lQ){var _lR=new T(function(){return A(_lQ,[_lg]);}),_lS=new T(function(){return A(_lQ,[_lf]);}),_lT=new T(function(){return A(_lQ,[_le]);}),_lU=new T(function(){return A(_lQ,[_ld]);}),_lV=new T(function(){return A(_lQ,[_lc]);}),_lW=new T(function(){return A(_lQ,[_lb]);}),_lX=new T(function(){return A(_lQ,[_la]);}),_lY=new T(function(){return A(_lQ,[_l9]);}),_lZ=new T(function(){return A(_lQ,[_l7]);}),_m0=new T(function(){return A(_lQ,[_l5]);});return _d0([0,function(_m1){switch(E(E(_m1)[1])){case 34:return E(_m0);case 39:return E(_lZ);case 92:return E(_lY);case 97:return E(_lX);case 98:return E(_lW);case 102:return E(_lV);case 110:return E(_lU);case 114:return E(_lT);case 116:return E(_lS);case 118:return E(_lR);default:return [2];}}],new T(function(){return _d0(_e9(_go,_gv,function(_m2){var _m3=new T(function(){return _lN(E(_m2)[1]);});return _ex(_m2,function(_m4){var _m5=_fx(_m3,_fo,_m4);return !_gC(_m5,_l3)?[2]:A(_lQ,[[0,new T(function(){var _m6=_gz(_m5);return _m6>>>0>1114111?_gx(_m6):[0,_m6];}),_gn]]);});}),new T(function(){var _m7=new T(function(){return A(_lQ,[_lM]);}),_m8=new T(function(){return A(_lQ,[_lL]);}),_m9=new T(function(){return A(_lQ,[_lK]);}),_ma=new T(function(){return A(_lQ,[_lJ]);}),_mb=new T(function(){return A(_lQ,[_lI]);}),_mc=new T(function(){return A(_lQ,[_lH]);}),_md=new T(function(){return A(_lQ,[_lG]);}),_me=new T(function(){return A(_lQ,[_lF]);}),_mf=new T(function(){return A(_lQ,[_lE]);}),_mg=new T(function(){return A(_lQ,[_lD]);}),_mh=new T(function(){return A(_lQ,[_lC]);}),_mi=new T(function(){return A(_lQ,[_lB]);}),_mj=new T(function(){return A(_lQ,[_lA]);}),_mk=new T(function(){return A(_lQ,[_lz]);}),_ml=new T(function(){return A(_lQ,[_ly]);}),_mm=new T(function(){return A(_lQ,[_lx]);}),_mn=new T(function(){return A(_lQ,[_lw]);}),_mo=new T(function(){return A(_lQ,[_lv]);}),_mp=new T(function(){return A(_lQ,[_lu]);}),_mq=new T(function(){return A(_lQ,[_lt]);}),_mr=new T(function(){return A(_lQ,[_ls]);}),_ms=new T(function(){return A(_lQ,[_lr]);}),_mt=new T(function(){return A(_lQ,[_lq]);}),_mu=new T(function(){return A(_lQ,[_lp]);}),_mv=new T(function(){return A(_lQ,[_lo]);}),_mw=new T(function(){return A(_lQ,[_ln]);}),_mx=new T(function(){return A(_lQ,[_lm]);}),_my=new T(function(){return A(_lQ,[_ll]);}),_mz=new T(function(){return A(_lQ,[_lk]);}),_mA=new T(function(){return A(_lQ,[_lj]);}),_mB=new T(function(){return A(_lQ,[_li]);}),_mC=new T(function(){return A(_lQ,[_lh]);});return _d0([0,function(_mD){return E(E(_mD)[1])==94?E([0,function(_mE){switch(E(E(_mE)[1])){case 64:return E(_mC);case 65:return E(_mB);case 66:return E(_mA);case 67:return E(_mz);case 68:return E(_my);case 69:return E(_mx);case 70:return E(_mw);case 71:return E(_mv);case 72:return E(_mu);case 73:return E(_mt);case 74:return E(_ms);case 75:return E(_mr);case 76:return E(_mq);case 77:return E(_mp);case 78:return E(_mo);case 79:return E(_mn);case 80:return E(_mm);case 81:return E(_ml);case 82:return E(_mk);case 83:return E(_mj);case 84:return E(_mi);case 85:return E(_mh);case 86:return E(_mg);case 87:return E(_mf);case 88:return E(_me);case 89:return E(_md);case 90:return E(_mc);case 91:return E(_mb);case 92:return E(_ma);case 93:return E(_m9);case 94:return E(_m8);case 95:return E(_m7);default:return [2];}}]):[2];}],new T(function(){return A(_l2,[function(_mF){return A(_lQ,[[0,_mF,_gn]]);}]);}));}));}));},_mG=function(_mH){return A(_mH,[_1f]);},_mI=function(_mJ){var _mK=E(_mJ);if(!_mK[0]){return E(_mG);}else{var _mL=_mK[2],_mM=E(E(_mK[1])[1]);switch(_mM){case 9:var _mN=new T(function(){return _mI(_mL);});return function(_mO){var _mP=new T(function(){return A(_mN,[_mO]);});return [0,function(_mQ){return E(_mP);}];};case 10:var _mR=new T(function(){return _mI(_mL);});return function(_mS){var _mT=new T(function(){return A(_mR,[_mS]);});return [0,function(_mU){return E(_mT);}];};case 11:var _mV=new T(function(){return _mI(_mL);});return function(_mW){var _mX=new T(function(){return A(_mV,[_mW]);});return [0,function(_mY){return E(_mX);}];};case 12:var _mZ=new T(function(){return _mI(_mL);});return function(_n0){var _n1=new T(function(){return A(_mZ,[_n0]);});return [0,function(_n2){return E(_n1);}];};case 13:var _n3=new T(function(){return _mI(_mL);});return function(_n4){var _n5=new T(function(){return A(_n3,[_n4]);});return [0,function(_n6){return E(_n5);}];};case 32:var _n7=new T(function(){return _mI(_mL);});return function(_n8){var _n9=new T(function(){return A(_n7,[_n8]);});return [0,function(_na){return E(_n9);}];};case 160:var _nb=new T(function(){return _mI(_mL);});return function(_nc){var _nd=new T(function(){return A(_nb,[_nc]);});return [0,function(_ne){return E(_nd);}];};default:var _nf=u_iswspace(_mM);if(!E(_nf)){return E(_mG);}else{var _ng=new T(function(){return _mI(_mL);});return function(_nh){var _ni=new T(function(){return A(_ng,[_nh]);});return [0,function(_nj){return E(_ni);}];};}}}},_nk=function(_nl){var _nm=new T(function(){return _lP(_nl);}),_nn=new T(function(){return _nk(_nl);}),_no=[1,function(_np){return A(_mI,[_np,function(_nq){return E([0,function(_nr){return E(E(_nr)[1])==92?E(_nn):[2];}]);}]);}];return _d0([0,function(_ns){return E(E(_ns)[1])==92?E([0,function(_nt){var _nu=E(E(_nt)[1]);switch(_nu){case 9:return E(_no);case 10:return E(_no);case 11:return E(_no);case 12:return E(_no);case 13:return E(_no);case 32:return E(_no);case 38:return E(_nn);case 160:return E(_no);default:var _nv=u_iswspace(_nu);return E(_nv)==0?[2]:E(_no);}}]):[2];}],[0,function(_nw){var _nx=E(_nw);return E(_nx[1])==92?E(_nm):A(_nl,[[0,_nx,_0]]);}]);},_ny=function(_nz,_nA){var _nB=new T(function(){return A(_nA,[[1,new T(function(){return A(_nz,[_g]);})]]);});return _nk(function(_nC){var _nD=E(_nC),_nE=E(_nD[1]);return E(_nE[1])==34?!E(_nD[2])?E(_nB):_ny(function(_nF){return A(_nz,[[1,_nE,_nF]]);},_nA):_ny(function(_nG){return A(_nz,[[1,_nE,_nG]]);},_nA);});},_nH=unCStr("_\'"),_nI=function(_nJ){var _nK=u_iswalnum(_nJ);return E(_nK)==0?_g1(_dx,[0,_nJ],_nH):true;},_nL=function(_nM){return _nI(E(_nM)[1]);},_nN=unCStr(",;()[]{}`"),_nO=function(_nP){return A(_nP,[_g]);},_nQ=function(_nR,_nS){var _nT=function(_nU){var _nV=E(_nU);if(!_nV[0]){return E(_nO);}else{var _nW=_nV[1];if(!A(_nR,[_nW])){return E(_nO);}else{var _nX=new T(function(){return _nT(_nV[2]);});return function(_nY){var _nZ=new T(function(){return A(_nX,[function(_o0){return A(_nY,[[1,_nW,_o0]]);}]);});return [0,function(_o1){return E(_nZ);}];};}}};return [1,function(_o2){return A(_nT,[_o2,_nS]);}];},_o3=unCStr(".."),_o4=unCStr("::"),_o5=unCStr("->"),_o6=[0,64],_o7=[1,_o6,_g],_o8=[0,126],_o9=[1,_o8,_g],_oa=unCStr("=>"),_ob=[1,_oa,_g],_oc=[1,_o9,_ob],_od=[1,_o7,_oc],_oe=[1,_o5,_od],_of=unCStr("<-"),_og=[1,_of,_oe],_oh=[0,124],_oi=[1,_oh,_g],_oj=[1,_oi,_og],_ok=[1,_l8,_g],_ol=[1,_ok,_oj],_om=[0,61],_on=[1,_om,_g],_oo=[1,_on,_ol],_op=[1,_o4,_oo],_oq=[1,_o3,_op],_or=function(_os){var _ot=new T(function(){return A(_os,[_eu]);});return _d0([1,function(_ou){return E(_ou)[0]==0?E(_ot):[2];}],new T(function(){var _ov=new T(function(){return _lP(function(_ow){var _ox=E(_ow);return (function(_oy,_oz){var _oA=new T(function(){return A(_os,[[0,_oy]]);});return !E(_oz)?E(E(_oy)[1])==39?[2]:[0,function(_oB){return E(E(_oB)[1])==39?E(_oA):[2];}]:[0,function(_oC){return E(E(_oC)[1])==39?E(_oA):[2];}];})(_ox[1],_ox[2]);});});return _d0([0,function(_oD){return E(E(_oD)[1])==39?E([0,function(_oE){var _oF=E(_oE);switch(E(_oF[1])){case 39:return [2];case 92:return E(_ov);default:var _oG=new T(function(){return A(_os,[[0,_oF]]);});return [0,function(_oH){return E(E(_oH)[1])==39?E(_oG):[2];}];}}]):[2];}],new T(function(){var _oI=new T(function(){return _ny(_1m,_os);});return _d0([0,function(_oJ){return E(E(_oJ)[1])==34?E(_oI):[2];}],new T(function(){return _d0([0,function(_oK){return !_g1(_dx,_oK,_nN)?[2]:A(_os,[[2,[1,_oK,_g]]]);}],new T(function(){return _d0([0,function(_oL){return !_g1(_dx,_oL,_g6)?[2]:_nQ(_g7,function(_oM){var _oN=[1,_oL,_oM];return !_g1(_dO,_oN,_oq)?A(_os,[[4,_oN]]):A(_os,[[2,_oN]]);});}],new T(function(){return _d0([0,function(_oO){var _oP=E(_oO),_oQ=_oP[1],_oR=u_iswalpha(_oQ);return E(_oR)==0?E(_oQ)==95?_nQ(_nL,function(_oS){return A(_os,[[3,[1,_oP,_oS]]]);}):[2]:_nQ(_nL,function(_oT){return A(_os,[[3,[1,_oP,_oT]]]);});}],new T(function(){return _e9(_gb,_fW,_os);}));}));}));}));}));}));},_oU=function(_oV){var _oW=new T(function(){return _or(_oV);});return [1,function(_oX){return A(_mI,[_oX,function(_oY){return E(_oW);}]);}];},_oZ=[0,0],_p0=function(_p1,_p2){var _p3=new T(function(){return A(_p1,[_oZ,function(_p4){var _p5=new T(function(){return A(_p2,[_p4]);});return _oU(function(_p6){var _p7=E(_p6);if(_p7[0]==2){var _p8=E(_p7[1]);return _p8[0]==0?[2]:E(E(_p8[1])[1])==41?E(_p8[2])[0]==0?E(_p5):[2]:[2];}else{return [2];}});}]);});return _oU(function(_p9){var _pa=E(_p9);if(_pa[0]==2){var _pb=E(_pa[1]);return _pb[0]==0?[2]:E(E(_pb[1])[1])==40?E(_pb[2])[0]==0?E(_p3):[2]:[2];}else{return [2];}});},_pc=function(_pd){return _d0(_oU(function(_pe){var _pf=E(_pe);return _pf[0]==0?A(_pd,[_pf[1]]):[2];}),new T(function(){return _p0(_pg,_pd);}));},_pg=function(_ph,_pi){return _pc(_pi);},_pj=function(_pk,_pl){var _pm=function(_pn,_po){var _pp=new T(function(){return A(_po,[_g]);}),_pq=new T(function(){return A(_pk,[_oZ,function(_pr){return _pm(_gn,function(_ps){return A(_po,[[1,_pr,_ps]]);});}]);});return _oU(function(_pt){var _pu=E(_pt);if(_pu[0]==2){var _pv=E(_pu[1]);if(!_pv[0]){return [2];}else{var _pw=_pv[2];switch(E(E(_pv[1])[1])){case 44:return E(_pw)[0]==0?!E(_pn)?[2]:E(_pq):[2];case 93:return E(_pw)[0]==0?E(_pp):[2];default:return [2];}}}else{return [2];}});},_px=function(_py){var _pz=new T(function(){return _d0(_pm(_0,_py),new T(function(){return A(_pk,[_oZ,function(_pA){return _pm(_gn,function(_pB){return A(_py,[[1,_pA,_pB]]);});}]);}));});return _d0(_oU(function(_pC){var _pD=E(_pC);if(_pD[0]==2){var _pE=E(_pD[1]);return _pE[0]==0?[2]:E(E(_pE[1])[1])==91?E(_pE[2])[0]==0?E(_pz):[2]:[2];}else{return [2];}}),new T(function(){return _p0(function(_pF,_pG){return _px(_pG);},_py);}));};return _px(_pl);},_pH=function(_pI){return _d0(_d0(_oU(function(_pJ){var _pK=E(_pJ);return _pK[0]==1?A(_pI,[_pK[1]]):[2];}),new T(function(){return _pj(_pg,_pI);})),new T(function(){return _p0(_pL,_pI);}));},_pL=function(_pM,_pN){return _pH(_pN);},_pO=new T(function(){return _p0(_pL,_e1);}),_pP=new T(function(){return _pj(_pg,_e1);}),_pQ=function(_pR){var _pS=E(_pR);return _pS[0]==1?[3,_pS[1],_e0]:[2];},_pT=new T(function(){return _or(_pQ);}),_pU=function(_pV){return E(_pT);},_pW=function(_pX){return A(_mI,[_pX,_pU]);},_pY=[1,_pW],_pZ=new T(function(){return _d0(_pY,_pP);}),_q0=new T(function(){return _d0(_pZ,_pO);}),_q1=function(_q2){return _cQ(_q0,_q2);},_q3=new T(function(){return _pc(_e1);}),_q4=function(_q2){return _cQ(_q3,_q2);},_q5=function(_q6){return E(_q4);},_q7=[0,_q5,_q1,_pg,_pL],_q8=function(_q9){return E(E(_q9)[4]);},_qa=function(_qb,_qc,_qd){return _pj(new T(function(){return _q8(_qb);}),_qd);},_qe=function(_qf){var _qg=new T(function(){return _pj(new T(function(){return _q8(_qf);}),_e1);});return function(_ah){return _cQ(_qg,_ah);};},_qh=function(_qi,_qj){var _qk=new T(function(){return A(_q8,[_qi,_qj,_e1]);});return function(_ah){return _cQ(_qk,_ah);};},_ql=function(_qm){return [0,function(_q2){return _qh(_qm,_q2);},new T(function(){return _qe(_qm);}),new T(function(){return _q8(_qm);}),function(_qn,_q2){return _qa(_qm,_qn,_q2);}];},_qo=new T(function(){return _ql(_q7);}),_qp=new T(function(){return E(_qo);}),_qq=unCStr("Prelude.(!!): negative index\n"),_qr=new T(function(){return err(_qq);}),_qs=unCStr("Prelude.(!!): index too large\n"),_qt=new T(function(){return err(_qs);}),_qu=function(_qv,_qw){while(1){var _qx=E(_qv);if(!_qx[0]){return E(_qt);}else{var _qy=E(_qw);if(!_qy){return E(_qx[1]);}else{_qv=_qx[2];_qw=_qy-1|0;continue;}}}},_qz=unCStr("ACK"),_qA=unCStr("BEL"),_qB=unCStr("BS"),_qC=unCStr("SP"),_qD=[1,_qC,_g],_qE=unCStr("US"),_qF=[1,_qE,_qD],_qG=unCStr("RS"),_qH=[1,_qG,_qF],_qI=unCStr("GS"),_qJ=[1,_qI,_qH],_qK=unCStr("FS"),_qL=[1,_qK,_qJ],_qM=unCStr("ESC"),_qN=[1,_qM,_qL],_qO=unCStr("SUB"),_qP=[1,_qO,_qN],_qQ=unCStr("EM"),_qR=[1,_qQ,_qP],_qS=unCStr("CAN"),_qT=[1,_qS,_qR],_qU=unCStr("ETB"),_qV=[1,_qU,_qT],_qW=unCStr("SYN"),_qX=[1,_qW,_qV],_qY=unCStr("NAK"),_qZ=[1,_qY,_qX],_r0=unCStr("DC4"),_r1=[1,_r0,_qZ],_r2=unCStr("DC3"),_r3=[1,_r2,_r1],_r4=unCStr("DC2"),_r5=[1,_r4,_r3],_r6=unCStr("DC1"),_r7=[1,_r6,_r5],_r8=unCStr("DLE"),_r9=[1,_r8,_r7],_ra=unCStr("SI"),_rb=[1,_ra,_r9],_rc=unCStr("SO"),_rd=[1,_rc,_rb],_re=unCStr("CR"),_rf=[1,_re,_rd],_rg=unCStr("FF"),_rh=[1,_rg,_rf],_ri=unCStr("VT"),_rj=[1,_ri,_rh],_rk=unCStr("LF"),_rl=[1,_rk,_rj],_rm=unCStr("HT"),_rn=[1,_rm,_rl],_ro=[1,_qB,_rn],_rp=[1,_qA,_ro],_rq=[1,_qz,_rp],_rr=unCStr("ENQ"),_rs=[1,_rr,_rq],_rt=unCStr("EOT"),_ru=[1,_rt,_rs],_rv=unCStr("ETX"),_rw=[1,_rv,_ru],_rx=unCStr("STX"),_ry=[1,_rx,_rw],_rz=unCStr("SOH"),_rA=[1,_rz,_ry],_rB=unCStr("NUL"),_rC=[1,_rB,_rA],_rD=[0,92],_rE=unCStr("\\DEL"),_rF=unCStr("\\a"),_rG=unCStr("\\\\"),_rH=unCStr("\\SO"),_rI=unCStr("\\r"),_rJ=unCStr("\\f"),_rK=unCStr("\\v"),_rL=unCStr("\\n"),_rM=unCStr("\\t"),_rN=unCStr("\\b"),_rO=function(_rP,_rQ){if(_rP<=127){var _rR=E(_rP);switch(_rR){case 92:return _2l(_rG,_rQ);case 127:return _2l(_rE,_rQ);default:if(_rR<32){var _rS=E(_rR);switch(_rS){case 7:return _2l(_rF,_rQ);case 8:return _2l(_rN,_rQ);case 9:return _2l(_rM,_rQ);case 10:return _2l(_rL,_rQ);case 11:return _2l(_rK,_rQ);case 12:return _2l(_rJ,_rQ);case 13:return _2l(_rI,_rQ);case 14:return _2l(_rH,new T(function(){var _rT=E(_rQ);return _rT[0]==0?[0]:E(E(_rT[1])[1])==72?unAppCStr("\\&",_rT):E(_rT);}));default:return _2l([1,_rD,new T(function(){var _rU=_rS;return _rU>=0?_qu(_rC,_rU):E(_qr);})],_rQ);}}else{return [1,[0,_rR],_rQ];}}}else{return [1,_rD,new T(function(){var _rV=jsShowI(_rP);return _2l(fromJSStr(_rV),new T(function(){var _rW=E(_rQ);if(!_rW[0]){return [0];}else{var _rX=E(_rW[1])[1];return _rX<48?E(_rW):_rX>57?E(_rW):unAppCStr("\\&",_rW);}}));})];}},_rY=[0,39],_rZ=[1,_rY,_g],_s0=unCStr("\'\\\'\'"),_s1=function(_s2){var _s3=E(E(_s2)[1]);return _s3==39?E(_s0):[1,_rY,new T(function(){return _rO(_s3,_rZ);})];},_s4=unCStr("\\\""),_s5=function(_s6,_s7){var _s8=E(_s6);if(!_s8[0]){return E(_s7);}else{var _s9=_s8[2],_sa=E(E(_s8[1])[1]);return _sa==34?_2l(_s4,new T(function(){return _s5(_s9,_s7);})):_rO(_sa,new T(function(){return _s5(_s9,_s7);}));}},_sb=function(_sc,_sd){return [1,_E,new T(function(){return _s5(_sc,[1,_E,_sd]);})];},_se=function(_sf){return _2l(_s0,_sf);},_sg=function(_sh,_si){var _sj=E(E(_si)[1]);return _sj==39?E(_se):function(_sk){return [1,_rY,new T(function(){return _rO(_sj,[1,_rY,_sk]);})];};},_sl=[0,_sg,_s1,_sb],_sm=function(_sn){return E(E(_sn)[3]);},_so=function(_sp,_sq){return A(_sm,[_sp,_sq,_g]);},_sr=function(_ss,_st,_su){return _3b(new T(function(){return _sm(_ss);}),_st,_su);},_sv=function(_sw){var _sx=new T(function(){return _sm(_sw);});return [0,function(_sy){return E(_sx);},function(_sf){return _so(_sw,_sf);},function(_sz,_sf){return _sr(_sw,_sz,_sf);}];},_sA=new T(function(){return _sv(_sl);}),_sB=new T(function(){return _bd(_8s,_8t,_94,_sA,_qp);}),_sC=unCStr("text"),_sD=new T(function(){return A(_sB,[_9,_sC,_9]);}),_sE=unCStr("keydown"),_sF=unCStr("mousemove"),_sG=unCStr("blur"),_sH=unCStr("focus"),_sI=unCStr("change"),_sJ=unCStr("unload"),_sK=unCStr("load"),_sL=unCStr("keyup"),_sM=unCStr("keypress"),_sN=unCStr("mouseup"),_sO=unCStr("mousedown"),_sP=unCStr("dblclick"),_sQ=unCStr("click"),_sR=unCStr("mouseout"),_sS=unCStr("mouseover"),_sT=function(_sU){switch(E(_sU)[0]){case 0:return E(_sK);case 1:return E(_sJ);case 2:return E(_sI);case 3:return E(_sH);case 4:return E(_sG);case 5:return E(_sF);case 6:return E(_sS);case 7:return E(_sR);case 8:return E(_sQ);case 9:return E(_sP);case 10:return E(_sO);case 11:return E(_sN);case 12:return E(_sM);case 13:return E(_sL);default:return E(_sE);}},_sV=[0],_sW=unCStr("OnLoad"),_sX=[0,_sW,_sV],_sY=function(_){var _=0,_sZ=newMVar(),_=putMVar(_sZ,_sX);return [0,_sZ];},_t0=new T(function(){return _2(_sY);}),_t1=function(_t2,_t3,_){var _t4=A(_t2,[_]);return die(_t3);},_t5=function(_t6,_t7,_t8,_){return _t1(function(_){var _=putMVar(_t7,_t6);return _1f;},_t8,_);},_t9=function(_ta,_){var _tb=0;if(!E(_tb)){return (function(_){var _tc=E(_t0)[1],_td=takeMVar(_tc),_te=jsCatch(function(_){return (function(_){return _ta;})();},function(_1C,_){return _t5(_td,_tc,_1C,_);}),_=putMVar(_tc,_te);return _1f;})();}else{var _tf=E(_t0)[1],_tg=takeMVar(_tf),_th=jsCatch(function(_){return _ta;},function(_1C,_){return _t5(_tg,_tf,_1C,_);}),_=putMVar(_tf,_th);return _1f;}},_ti=unCStr("true"),_tj=function(_tk,_tl){while(1){var _tm=E(_tk);if(!_tm[0]){return E(_tl)[0]==0?true:false;}else{var _tn=E(_tl);if(!_tn[0]){return false;}else{if(E(_tm[1])[1]!=E(_tn[1])[1]){return false;}else{_tk=_tm[2];_tl=_tn[2];continue;}}}}},_to=new T(function(){return [0,"keydown"];}),_tp=new T(function(){return [0,"mousemove"];}),_tq=new T(function(){return [0,"blur"];}),_tr=new T(function(){return [0,"focus"];}),_ts=new T(function(){return [0,"change"];}),_tt=new T(function(){return [0,"unload"];}),_tu=new T(function(){return [0,"load"];}),_tv=new T(function(){return [0,"keyup"];}),_tw=new T(function(){return [0,"keypress"];}),_tx=new T(function(){return [0,"mouseup"];}),_ty=new T(function(){return [0,"mousedown"];}),_tz=new T(function(){return [0,"dblclick"];}),_tA=new T(function(){return [0,"click"];}),_tB=new T(function(){return [0,"mouseout"];}),_tC=new T(function(){return [0,"mouseover"];}),_tD=function(_tE){switch(E(_tE)[0]){case 0:return E(_tu);case 1:return E(_tt);case 2:return E(_ts);case 3:return E(_tr);case 4:return E(_tq);case 5:return E(_tp);case 6:return E(_tC);case 7:return E(_tB);case 8:return E(_tA);case 9:return E(_tz);case 10:return E(_ty);case 11:return E(_tx);case 12:return E(_tw);case 13:return E(_tv);default:return E(_to);}},_tF=function(_tG,_tH,_tI){var _tJ=new T(function(){return _sT(_tH);}),_tK=new T(function(){return _tD(_tH);});return function(_tL,_){var _tM=A(_tG,[_tL,_]),_tN=E(_tM),_tO=_tN[1],_tP=E(_tJ),_tQ=jsGetAttr(_tO,toJSStr(_tP));if(!_tj(fromJSStr(_tQ),_ti)){var _tR=E(_tI),_tS=jsSetCB(_tO,E(_tK)[1],E([0,_tI])[1]),_tT=A(_1g,[_1m,_tN,_tP,_ti,_]);return _tN;}else{return _tN;}};},_tU=function(_tV,_tW){var _tX=new T(function(){return _sT(_tW);}),_tY=[0,_tX,_sV];return function(_tZ,_){var _u0=E(_tZ),_u1=E(_u0[4]),_u2=_u1[1],_u3=_u1[2],_u4=A(_tV,[_u0,_]),_u5=E(_u4),_u6=E(_u5[1]),_u7=_u6[1];return [0,[0,new T(function(){var _u8=E(_tW);switch(_u8[0]){case 0:return _tF(_u7,_u8,function(_){var _u9=_t9(_tY,_),_ua=A(_u2,[_]),_ub=E(_ua);if(!_ub[0]){return _1f;}else{var _uc=A(_u3,[_ub[1],_]);return _1f;}});case 1:return _tF(_u7,_u8,function(_){var _ud=_t9(_tY,_),_ue=A(_u2,[_]),_uf=E(_ue);if(!_uf[0]){return _1f;}else{var _ug=A(_u3,[_uf[1],_]);return _1f;}});case 2:return _tF(_u7,_u8,function(_){var _uh=_t9(_tY,_),_ui=A(_u2,[_]),_uj=E(_ui);if(!_uj[0]){return _1f;}else{var _uk=A(_u3,[_uj[1],_]);return _1f;}});case 3:return _tF(_u7,_u8,function(_){var _ul=_t9(_tY,_),_um=A(_u2,[_]),_un=E(_um);if(!_un[0]){return _1f;}else{var _uo=A(_u3,[_un[1],_]);return _1f;}});case 4:return _tF(_u7,_u8,function(_){var _up=_t9(_tY,_),_uq=A(_u2,[_]),_ur=E(_uq);if(!_ur[0]){return _1f;}else{var _us=A(_u3,[_ur[1],_]);return _1f;}});case 5:return _tF(_u7,_u8,function(_ut,_){var _uu=_t9([0,_tX,[2,E(_ut)]],_),_uv=A(_u2,[_]),_uw=E(_uv);if(!_uw[0]){return _1f;}else{var _ux=A(_u3,[_uw[1],_]);return _1f;}});case 6:return _tF(_u7,_u8,function(_uy,_){var _uz=_t9([0,_tX,[2,E(_uy)]],_),_uA=A(_u2,[_]),_uB=E(_uA);if(!_uB[0]){return _1f;}else{var _uC=A(_u3,[_uB[1],_]);return _1f;}});case 7:return _tF(_u7,_u8,function(_){var _uD=A(_u2,[_]),_uE=E(_uD);if(!_uE[0]){return _1f;}else{var _uF=A(_u3,[_uE[1],_]);return _1f;}});case 8:return _tF(_u7,_u8,function(_uG,_uH,_){var _uI=_t9([0,_tX,[1,_uG,E(_uH)]],_),_uJ=A(_u2,[_]),_uK=E(_uJ);if(!_uK[0]){return _1f;}else{var _uL=A(_u3,[_uK[1],_]);return _1f;}});case 9:return _tF(_u7,_u8,function(_uM,_uN,_){var _uO=_t9([0,_tX,[1,_uM,E(_uN)]],_),_uP=A(_u2,[_]),_uQ=E(_uP);if(!_uQ[0]){return _1f;}else{var _uR=A(_u3,[_uQ[1],_]);return _1f;}});case 10:return _tF(_u7,_u8,function(_uS,_uT,_){var _uU=_t9([0,_tX,[1,_uS,E(_uT)]],_),_uV=A(_u2,[_]),_uW=E(_uV);if(!_uW[0]){return _1f;}else{var _uX=A(_u3,[_uW[1],_]);return _1f;}});case 11:return _tF(_u7,_u8,function(_uY,_uZ,_){var _v0=_t9([0,_tX,[1,_uY,E(_uZ)]],_),_v1=A(_u2,[_]),_v2=E(_v1);if(!_v2[0]){return _1f;}else{var _v3=A(_u3,[_v2[1],_]);return _1f;}});case 12:return _tF(_u7,_u8,function(_v4,_){var _v5=_t9([0,_tX,[3,_v4]],_),_v6=A(_u2,[_]),_v7=E(_v6);if(!_v7[0]){return _1f;}else{var _v8=A(_u3,[_v7[1],_]);return _1f;}});case 13:return _tF(_u7,_u8,function(_v9,_){var _va=_t9([0,_tX,[3,_v9]],_),_vb=A(_u2,[_]),_vc=E(_vb);if(!_vc[0]){return _1f;}else{var _vd=A(_u3,[_vc[1],_]);return _1f;}});default:return _tF(_u7,_u8,function(_ve,_){var _vf=_t9([0,_tX,[3,_ve]],_),_vg=A(_u2,[_]),_vh=E(_vg);if(!_vh[0]){return _1f;}else{var _vi=A(_u3,[_vh[1],_]);return _1f;}});}}),_u6[2]],_u5[2]];};},_vj=new T(function(){return _tU(_sD,_5s);}),_vk=function(_){var _vl=_13(_),_vm=E(_k)[1],_vn=takeMVar(_vm),_vo=_4S(_vj,_1b,_vn,_),_vp=E(_vo),_vq=E(_vp[1]),_vr=_vq[1],_vs=_vq[2],_=putMVar(_vm,new T(function(){var _vt=E(_vp[2]);return [0,_vt[1],_vt[2],_vt[3],_vt[4],_0,_vt[6]];}));if(!E(E(_vn)[5])){var _vu=A(_vr,[_vl,_]),_vv=E(_vs);if(!_vv[0]){return _3A(_5r,_);}else{var _vw=E(_vv[1]),_vx=jsAlert(toJSStr(_vw));return _vw;}}else{var _vy=A(_7,[E(E(_vl)[1]),_]),_vz=A(_vr,[[0,_vy],_]),_vA=E(_vs);if(!_vA[0]){return _3A(_5r,_);}else{var _vB=E(_vA[1]),_vC=jsAlert(toJSStr(_vB));return _vB;}}},_vD=unCStr("span"),_vE=function(_vF,_vG){var _vH=new T(function(){return A(_vF,[_vG]);});return function(_vI,_){var _vJ=jsCreateElem(toJSStr(E(_vD))),_vK=jsAppendChild(_vJ,E(_vI)[1]),_vL=[0,_vJ],_vM=A(_vH,[_vL,_]);return _vL;};},_vN=function(_){var _vO=_13(_),_vP=A(_vE,[_z,_L,_vO,_]),_vQ=_G(_vO,_),_vR=_vk(_),_vS=_13(_),_vT=A(_vE,[_z,[1,_E,new T(function(){return _s5(unAppCStr("hello",_vR),_K);})],_vS,_]),_vU=_G(_vS,_);return _vS;},_vV=unCStr("padding:15px;border-style:dotted"),_vW=unCStr("border-collapse:collapse"),_vX=unCStr("vertical-align:top"),_vY=[0,3],_vZ=[0,112],_w0=[1,_vZ,_g],_w1=function(_w2,_w3){var _w4=new T(function(){return A(_w2,[_w3]);});return function(_w5,_){var _w6=jsCreateElem(toJSStr(_w0)),_w7=jsAppendChild(_w6,E(_w5)[1]),_w8=[0,_w6],_w9=A(_w4,[_w8,_]);return _w8;};},_wa=function(_wb){return _4i(0,E(_wb)[1],_g);},_wc=[0,98],_wd=[1,_wc,_g],_we=function(_wf,_wg){var _wh=new T(function(){return A(_wf,[_wg]);});return function(_wi,_){var _wj=jsCreateElem(toJSStr(_wd)),_wk=jsAppendChild(_wj,E(_wi)[1]),_wl=[0,_wj],_wm=A(_wh,[_wl,_]);return _wl;};},_wn=[1,_1f],_wo=unCStr("result: "),_wp=function(_wq){var _wr=new T(function(){return _we(_z,new T(function(){return _wa(_wq);}));});return function(_ws,_){return [0,[0,function(_wt,_){var _wu=_G(_wt,_),_wv=_z(_wo,_wt,_),_ww=A(_wr,[_wt,_]);return _wt;},_wn],_ws];};},_wx=unCStr(" numbers and append the result using a fold"),_wy=[0,0],_wz=[1,_wy],_wA=[0,_Z,_wz],_wB=function(_wC,_){return [0,_wA,_wC];},_wD=function(_wE,_wF,_){var _wG=A(_wF,[_]);return _wE;},_wH=function(_wI,_wJ,_){var _wK=A(_wJ,[_]);return new T(function(){return A(_wI,[_wK]);});},_wL=[0,_wH,_wD],_wM=function(_wN){var _wO=E(_wN);return _wO[0]==0?0:E(_wO[1])[1]+_wM(_wO[2])|0;},_wP=function(_wQ){return [0,_wM(_wQ)];},_wR=function(_wS,_wT){return [0,E(_wS)[1]+E(_wT)[1]|0];},_wU=[0,_wy,_wR,_wP],_wV=function(_wW,_wX){var _wY=E(_wX);return _wY[0]==0?[0]:[1,new T(function(){return A(_wW,[_wY[1]]);})];},_wZ=function(_x0,_x1,_x2,_x3,_x4,_x5){var _x6=new T(function(){return _b5(_x0);});return A(_x1,[new T(function(){return A(_x3,[_x5]);}),function(_x7){var _x8=E(_x7),_x9=E(_x8[1]);return A(_x1,[new T(function(){return A(_x4,[_x8[2]]);}),function(_xa){var _xb=E(_xa),_xc=E(_xb[1]);return A(_x2,[[0,[0,new T(function(){return A(_x6,[_x9[1],_xc[1]]);}),new T(function(){var _xd=E(_x9[2]);if(!_xd[0]){return [0];}else{var _xe=E(_xc[2]);return _xe[0]==0?[0]:[1,new T(function(){return A(_xd[1],[_xe[1]]);})];}})],_xb[2]]]);}]);}]);},_xf=function(_xg){return E(E(_xg)[1]);},_xh=function(_xi,_xj,_xk,_xl,_xm,_xn){var _xo=new T(function(){return _8u(_xi);});return function(_xp){var _xq=E(_xj);return _wZ(_xo,_xq[1],_xq[3],function(_xr){return A(new T(function(){var _xs=new T(function(){return _b5(_xl);});return A(_xf,[_xk,function(_xt){return [0,new T(function(){var _xu=E(E(_xt)[1]);return [0,_xu[1],new T(function(){return _wV(_xs,_xu[2]);})];}),new T(function(){return E(E(_xt)[2]);})];}]);}),[new T(function(){return A(_xm,[_xr]);})]);},_xn,_xp);};},_xv=function(_xw,_xx){while(1){var _xy=(function(_xz,_xA){var _xB=E(_xA);if(!_xB[0]){return E(_xz);}else{_xw=new T(function(){return _xh(_8s,_3C,_wL,_wU,_xz,_xB[1]);});_xx=_xB[2];return null;}})(_xw,_xx);if(_xy!=null){return _xy;}}},_xC=[13,coercionToken],_xD=function(_xE,_xF,_xG){var _xH=function(_xI,_xJ){var _xK=new T(function(){return _or(function(_xL){return A(_xE,[_xL,_xI,function(_xM){return A(_xJ,[new T(function(){return [0, -E(_xM)[1]];})]);}]);});});return _d0(_oU(function(_xN){var _xO=E(_xN);if(_xO[0]==4){var _xP=E(_xO[1]);return _xP[0]==0?A(_xE,[_xO,_xI,_xJ]):E(E(_xP[1])[1])==45?E(_xP[2])[0]==0?E([1,function(_xQ){return A(_mI,[_xQ,function(_xR){return E(_xK);}]);}]):A(_xE,[_xO,_xI,_xJ]):A(_xE,[_xO,_xI,_xJ]);}else{return A(_xE,[_xO,_xI,_xJ]);}}),new T(function(){return _p0(_xH,_xJ);}));};return _xH(_xF,_xG);},_xS=function(_xT,_xU){return [2];},_xV=function(_qn,_q2){return _xS(_qn,_q2);},_xW=function(_xX){var _xY=E(_xX);return _xY[0]==0?[1,new T(function(){return _fx(new T(function(){return _lN(E(_xY[1])[1]);}),_fo,_xY[2]);})]:E(_xY[2])[0]==0?E(_xY[3])[0]==0?[1,new T(function(){return _fx(_fn,_fo,_xY[1]);})]:[0]:[0];},_xZ=function(_y0){var _y1=E(_y0);if(_y1[0]==5){var _y2=_xW(_y1[1]);if(!_y2[0]){return E(_xS);}else{var _y3=new T(function(){return [0,_gz(_y2[1])];});return function(_y4,_y5){return A(_y5,[_y3]);};}}else{return E(_xV);}},_y6=function(_qn,_q2){return _xD(_xZ,_qn,_q2);},_y7=function(_y8,_y9){return _pj(_y6,_y9);},_ya=new T(function(){return _pj(_y6,_e1);}),_yb=function(_q2){return _cQ(_ya,_q2);},_yc=function(_yd){var _ye=new T(function(){return _xD(_xZ,_yd,_e1);});return function(_ah){return _cQ(_ye,_ah);};},_yf=[0,_yc,_yb,_y6,_y7],_yg=function(_yh,_yi){return _4i(0,E(_yh)[1],_yi);},_yj=function(_yk,_yl){return _3b(_yg,_yk,_yl);},_ym=function(_yn,_yo,_yp){return _4i(E(_yn)[1],E(_yo)[1],_yp);},_yq=[0,_ym,_wa,_yj],_yr=unCStr("Int"),_ys=[0,I_fromBits([1521842780,3792221899]),I_fromBits([1346191152,3861967380]),_5B,_8T,_yr],_yt=[0,I_fromBits([1521842780,3792221899]),I_fromBits([1346191152,3861967380]),_ys,_g],_yu=function(_yv){return E(_yt);},_yw=new T(function(){return _bd(_8s,_8t,_yu,_yq,_yf);}),_yx=new T(function(){return A(_yw,[_9,_sC,_9]);}),_yy=new T(function(){return _tU(_yx,_xC);}),_yz=function(_yA,_){var _yB=A(_yy,[_yA,_]),_yC=E(_yB),_yD=E(_yC[1]);return [0,[0,function(_yE,_){var _yF=A(_yD[1],[_yE,_]),_yG=_G(_yE,_);return _yE;},_yD[2]],_yC[2]];},_yH=new T(function(){return [1,_yz,_yH];}),_yI=function(_yJ,_yK){var _yL=E(_yJ);if(!_yL){return [0];}else{var _yM=E(_yK);return _yM[0]==0?[0]:[1,_yM[1],new T(function(){return _yI(_yL-1|0,_yM[2]);})];}},_yN=function(_yO,_yP){return _yO<0?[0]:_yI(_yO,_yP);},_yQ=function(_yR,_yS){var _yT=E(_yR)[1];return _yT>0?_yN(_yT,_yS):[0];},_yU=function(_yV){var _yW=new T(function(){return _xv(_wB,_yQ(_yV,_yH));}),_yX=new T(function(){return _w1(_z,new T(function(){return unAppCStr("This widget sum ",new T(function(){return _2l(_4i(0,E(_yV)[1],_g),_wx);}));}));});return function(_yY,_){var _yZ=_4S(_yW,_wp,_yY,_),_z0=E(_yZ),_z1=E(_z0[1]),_z2=new T(function(){return _w1(_11,_z1[1]);});return [0,[0,function(_z3,_){var _z4=A(_yX,[_z3,_]),_z5=A(_z2,[_z3,_]);return _z3;},_z1[2]],_z0[2]];};},_z6=new T(function(){return _yU(_vY);}),_z7=unCStr("center"),_z8=function(_z9,_za){var _zb=new T(function(){return A(_z9,[_za]);});return function(_zc,_){var _zd=jsCreateElem(toJSStr(E(_z7))),_ze=jsAppendChild(_zd,E(_zc)[1]),_zf=[0,_zd],_zg=A(_zb,[_zf,_]);return _zf;};},_zh=function(_zi,_){return _zi;},_zj=unCStr("Two counters. One is pure and recursive, the other is stateful"),_zk=new T(function(){return _w1(_z,_zj);}),_zl=[8,coercionToken],_zm=unCStr("submit"),_zn=new T(function(){return A(_bd,[_8s,_8t,_94,_sA,_qp,_9,_zm]);}),_zo=[0,43],_zp=[1,_zo,_g],_zq=[1,_zp],_zr=new T(function(){return A(_zn,[_zq]);}),_zs=new T(function(){return _tU(_zr,_zl);}),_zt=function(_zu,_zv,_zw,_){var _zx=A(_zv,[_zw,_]),_zy=E(_zx),_zz=E(_zy[1]);return [0,[0,function(_zA,_){var _zB=_4B(_4A,_zA,_),_zC=A(_1g,[_1m,_zB,_1e,_zu,_]),_zD=A(_zz[1],[_zB,_]);return _zB;},_zz[2]],_zy[2]];},_zE=new T(function(){return _4n(_1I,_4a,_1G,_1D);}),_zF=new T(function(){return _4n(_1I,_4a,_1G,_1D);}),_zG=function(_zH,_zI,_zJ,_){var _zK=A(_zF,[_zJ,_]),_zL=A(_zE,[new T(function(){return E(E(_zK)[2]);}),_]),_zM=new T(function(){return E(E(_zK)[1]);});return _4S(function(_1C,_){return _zt(_zM,_zH,_1C,_);},function(_zN){var _zO=new T(function(){return A(_zI,[_zN]);});return function(_zP,_){var _zQ=A(_zO,[_zP,_]),_zR=E(_zQ),_zS=E(_zR[1]);return [0,[0,function(_zT,_){var _zU=E(_zM),_zV=jsFind(toJSStr(_zU)),_zW=E(_zV);if(!_zW[0]){return _4I(_zU);}else{var _zX=E(_zW[1]),_zY=A(_7,[E(_zX[1]),_]),_zZ=jsKillChild(E(_zX)[1],_zY),_A0=A(_zS[1],[_zT,_]);return _zT;}},_zS[2]],_zR[2]];};},new T(function(){return E(E(_zL)[2]);}),_);},_A1=function(_A2){var _A3=new T(function(){return _A1(new T(function(){return [0,E(_A2)[1]+1|0];}));}),_A4=new T(function(){return _we(_z,new T(function(){return _wa(_A2);}));});return function(_ah,_A5){return _zG(function(_A6,_){var _A7=A(_zs,[_A6,_]),_A8=E(_A7),_A9=E(_A8[1]);return [0,[0,function(_Aa,_){var _Ab=A(_A4,[_Aa,_]),_Ac=A(_A9[1],[_Aa,_]);return _Aa;},_A9[2]],_A8[2]];},function(_Ad){return E(_A3);},_ah,_A5);};},_Ae=unCStr("main"),_Af=unCStr("Main"),_Ag=unCStr("Counter"),_Ah=[0,I_fromBits([4029179641,2406453796]),I_fromBits([547056354,2957229436]),_Ae,_Af,_Ag],_Ai=function(_Aj,_Ak){var _Al=hs_leWord64(_Aj,_Ak);return E(_Al)==0?false:true;},_Am=function(_An,_Ao,_Ap,_Aq){var _Ar=hs_eqWord64(_An,_Ap);if(!E(_Ar)){var _As=hs_leWord64(_An,_Ap);return E(_As)==0?false:true;}else{return _Ai(_Ao,_Aq);}},_At=function(_Au,_Av){var _Aw=E(_Au),_Ax=_Aw[1],_Ay=_Aw[2],_Az=E(_Av),_AA=_Az[1],_AB=_Az[2],_AC=hs_eqWord64(_Ax,_AA);if(!E(_AC)){return !_Am(_Ax,_Ay,_AA,_AB)?2:0;}else{var _AD=hs_eqWord64(_Ay,_AB);return E(_AD)==0?!_Am(_Ax,_Ay,_AA,_AB)?2:0:1;}},_AE=unCStr("Failure in Data.Map.balanceL"),_AF=new T(function(){return err(_AE);}),_AG=function(_AH,_AI,_AJ,_AK){var _AL=E(_AK);if(!_AL[0]){var _AM=_AL[1],_AN=E(_AJ);if(!_AN[0]){var _AO=_AN[1],_AP=_AN[2],_AQ=_AN[3];if(_AO<=(imul(3,_AM)|0)){return [0,(1+_AO|0)+_AM|0,E(E(_AH)),_AI,E(_AN),E(_AL)];}else{var _AR=E(_AN[4]);if(!_AR[0]){var _AS=_AR[1],_AT=E(_AN[5]);if(!_AT[0]){var _AU=_AT[1],_AV=_AT[2],_AW=_AT[3],_AX=_AT[4];if(_AU>=(imul(2,_AS)|0)){var _AY=function(_AZ){var _B0=E(_AT[5]);return _B0[0]==0?[0,(1+_AO|0)+_AM|0,E(_AV),_AW,E([0,(1+_AS|0)+_AZ|0,E(_AP),_AQ,E(_AR),E(_AX)]),E([0,(1+_AM|0)+_B0[1]|0,E(E(_AH)),_AI,E(_B0),E(_AL)])]:[0,(1+_AO|0)+_AM|0,E(_AV),_AW,E([0,(1+_AS|0)+_AZ|0,E(_AP),_AQ,E(_AR),E(_AX)]),E([0,1+_AM|0,E(E(_AH)),_AI,E(_f),E(_AL)])];},_B1=E(_AX);return _B1[0]==0?_AY(_B1[1]):_AY(0);}else{return [0,(1+_AO|0)+_AM|0,E(_AP),_AQ,E(_AR),E([0,(1+_AM|0)+_AU|0,E(E(_AH)),_AI,E(_AT),E(_AL)])];}}else{return E(_AF);}}else{return E(_AF);}}}else{return [0,1+_AM|0,E(E(_AH)),_AI,E(_f),E(_AL)];}}else{var _B2=E(_AJ);if(!_B2[0]){var _B3=_B2[1],_B4=_B2[2],_B5=_B2[3],_B6=_B2[5],_B7=E(_B2[4]);if(!_B7[0]){var _B8=_B7[1],_B9=E(_B6);if(!_B9[0]){var _Ba=_B9[1],_Bb=_B9[2],_Bc=_B9[3],_Bd=_B9[4];if(_Ba>=(imul(2,_B8)|0)){var _Be=function(_Bf){var _Bg=E(_B9[5]);return _Bg[0]==0?[0,1+_B3|0,E(_Bb),_Bc,E([0,(1+_B8|0)+_Bf|0,E(_B4),_B5,E(_B7),E(_Bd)]),E([0,1+_Bg[1]|0,E(E(_AH)),_AI,E(_Bg),E(_f)])]:[0,1+_B3|0,E(_Bb),_Bc,E([0,(1+_B8|0)+_Bf|0,E(_B4),_B5,E(_B7),E(_Bd)]),E([0,1,E(E(_AH)),_AI,E(_f),E(_f)])];},_Bh=E(_Bd);return _Bh[0]==0?_Be(_Bh[1]):_Be(0);}else{return [0,1+_B3|0,E(_B4),_B5,E(_B7),E([0,1+_Ba|0,E(E(_AH)),_AI,E(_B9),E(_f)])];}}else{return [0,3,E(_B4),_B5,E(_B7),E([0,1,E(E(_AH)),_AI,E(_f),E(_f)])];}}else{var _Bi=E(_B6);return _Bi[0]==0?[0,3,E(_Bi[2]),_Bi[3],E([0,1,E(_B4),_B5,E(_f),E(_f)]),E([0,1,E(E(_AH)),_AI,E(_f),E(_f)])]:[0,2,E(E(_AH)),_AI,E(_B2),E(_f)];}}else{return [0,1,E(E(_AH)),_AI,E(_f),E(_f)];}}},_Bj=unCStr("Failure in Data.Map.balanceR"),_Bk=new T(function(){return err(_Bj);}),_Bl=function(_Bm,_Bn,_Bo,_Bp){var _Bq=E(_Bo);if(!_Bq[0]){var _Br=_Bq[1],_Bs=E(_Bp);if(!_Bs[0]){var _Bt=_Bs[1],_Bu=_Bs[2],_Bv=_Bs[3];if(_Bt<=(imul(3,_Br)|0)){return [0,(1+_Br|0)+_Bt|0,E(E(_Bm)),_Bn,E(_Bq),E(_Bs)];}else{var _Bw=E(_Bs[4]);if(!_Bw[0]){var _Bx=_Bw[1],_By=_Bw[2],_Bz=_Bw[3],_BA=_Bw[4],_BB=E(_Bs[5]);if(!_BB[0]){var _BC=_BB[1];if(_Bx>=(imul(2,_BC)|0)){var _BD=function(_BE){var _BF=E(_Bm),_BG=E(_Bw[5]);return _BG[0]==0?[0,(1+_Br|0)+_Bt|0,E(_By),_Bz,E([0,(1+_Br|0)+_BE|0,E(_BF),_Bn,E(_Bq),E(_BA)]),E([0,(1+_BC|0)+_BG[1]|0,E(_Bu),_Bv,E(_BG),E(_BB)])]:[0,(1+_Br|0)+_Bt|0,E(_By),_Bz,E([0,(1+_Br|0)+_BE|0,E(_BF),_Bn,E(_Bq),E(_BA)]),E([0,1+_BC|0,E(_Bu),_Bv,E(_f),E(_BB)])];},_BH=E(_BA);return _BH[0]==0?_BD(_BH[1]):_BD(0);}else{return [0,(1+_Br|0)+_Bt|0,E(_Bu),_Bv,E([0,(1+_Br|0)+_Bx|0,E(E(_Bm)),_Bn,E(_Bq),E(_Bw)]),E(_BB)];}}else{return E(_Bk);}}else{return E(_Bk);}}}else{return [0,1+_Br|0,E(E(_Bm)),_Bn,E(_Bq),E(_f)];}}else{var _BI=E(_Bp);if(!_BI[0]){var _BJ=_BI[1],_BK=_BI[2],_BL=_BI[3],_BM=_BI[5],_BN=E(_BI[4]);if(!_BN[0]){var _BO=_BN[1],_BP=_BN[2],_BQ=_BN[3],_BR=_BN[4],_BS=E(_BM);if(!_BS[0]){var _BT=_BS[1];if(_BO>=(imul(2,_BT)|0)){var _BU=function(_BV){var _BW=E(_Bm),_BX=E(_BN[5]);return _BX[0]==0?[0,1+_BJ|0,E(_BP),_BQ,E([0,1+_BV|0,E(_BW),_Bn,E(_f),E(_BR)]),E([0,(1+_BT|0)+_BX[1]|0,E(_BK),_BL,E(_BX),E(_BS)])]:[0,1+_BJ|0,E(_BP),_BQ,E([0,1+_BV|0,E(_BW),_Bn,E(_f),E(_BR)]),E([0,1+_BT|0,E(_BK),_BL,E(_f),E(_BS)])];},_BY=E(_BR);return _BY[0]==0?_BU(_BY[1]):_BU(0);}else{return [0,1+_BJ|0,E(_BK),_BL,E([0,1+_BO|0,E(E(_Bm)),_Bn,E(_f),E(_BN)]),E(_BS)];}}else{return [0,3,E(_BP),_BQ,E([0,1,E(E(_Bm)),_Bn,E(_f),E(_f)]),E([0,1,E(_BK),_BL,E(_f),E(_f)])];}}else{var _BZ=E(_BM);return _BZ[0]==0?[0,3,E(_BK),_BL,E([0,1,E(E(_Bm)),_Bn,E(_f),E(_f)]),E(_BZ)]:[0,2,E(E(_Bm)),_Bn,E(_f),E(_BI)];}}else{return [0,1,E(E(_Bm)),_Bn,E(_f),E(_f)];}}},_C0=function(_C1,_C2,_C3,_C4,_C5,_C6){var _C7=E(_C6);if(!_C7[0]){var _C8=_C7[2],_C9=_C7[3],_Ca=_C7[4],_Cb=_C7[5];switch(_At([0,_C1,_C2,_C3,_C4],_C8)){case 0:return _AG(_C8,_C9,_C0(_C1,_C2,_C3,_C4,_C5,_Ca),_Cb);case 1:return [0,_C7[1],E([0,_C1,_C2,_C3,_C4]),_C5,E(_Ca),E(_Cb)];default:return _Bl(_C8,_C9,_Ca,_C0(_C1,_C2,_C3,_C4,_C5,_Cb));}}else{return [0,1,E([0,_C1,_C2,_C3,_C4]),_C5,E(_f),E(_f)];}},_Cc=[0,_Z,_wn],_Cd=function(_Ce,_){return [0,[0,_Z,[1,_Ce]],_Ce];},_Cf=[1,_1f],_Cg=function(_Ch){var _Ci=new T(function(){return [0,E(_Ch)[1]+1|0];}),_Cj=new T(function(){return _we(_z,new T(function(){return _wa(_Ch);}));});return function(_ah,_A5){return _4S(function(_Ck,_){return [0,[0,_Cj,_Cf],_Ck];},function(_Cl,_Cm,_){return (function(_Cm,_){return _4S(_Cd,function(_Cn){return function(_Co,_){return [0,_Cc,new T(function(){var _Cp=E(_Cn);return [0,_Cp[1],_Cp[2],_Cp[3],_Cp[4],_Cp[5],new T(function(){return _C0(I_fromBits([4029179641,2406453796]),I_fromBits([547056354,2957229436]),_Ah,_g,_Ci,_Cp[6]);})];})];};},_Cm,_);})(_Cm,_);},_ah,_A5);};},_Cq=[0,I_fromBits([4029179641,2406453796]),I_fromBits([547056354,2957229436]),_Ah,_g],_Cr=function(_Cs){return E(_Cq);},_Ct=function(_Cu,_Cv,_Cw,_Cx,_Cy){while(1){var _Cz=E(_Cy);if(!_Cz[0]){switch(_At([0,_Cu,_Cv,_Cw,_Cx],_Cz[2])){case 0:_Cy=_Cz[4];continue;case 1:return [1,_Cz[3]];default:_Cy=_Cz[5];continue;}}else{return [0];}}},_CA=function(_CB,_CC){var _CD=E(_CB),_CE=_CD[1],_CF=_CD[2],_CG=_CD[3],_CH=_CD[4],_CI=E(_CC);if(!_CI[0]){switch(_At(_CD,_CI[2])){case 0:return _Ct(_CE,_CF,_CG,_CH,_CI[4]);case 1:return [1,_CI[3]];default:return _Ct(_CE,_CF,_CG,_CH,_CI[5]);}}else{return [0];}},_CJ=function(_CK,_CL,_CM,_CN){var _CO=E(_CL),_CP=_CO[1],_CQ=_CO[3],_CR=new T(function(){return A(_CN,[_8P]);}),_CS=new T(function(){return A(_CQ,[_9]);});return A(_CP,[new T(function(){return A(_CP,[_CM,function(_CT){return A(_CQ,[new T(function(){var _CU=E(_CK);return E(E(_CT)[6]);})]);}]);}),function(_CV){var _CW=_CA(_CR,_CV);return _CW[0]==0?E(_CS):A(_CQ,[[1,_CW[1]]]);}]);},_CX=new T(function(){return _CJ(_1I,_4a,_1G,_Cr);}),_CY=function(_CZ){var _D0=new T(function(){return _A1(_CZ);});return function(_D1,_){var _D2=A(_D0,[_D1,_]),_D3=E(_D2),_D4=E(_D3[1]),_D5=_4S(_zs,function(_D6){return function(_Cm,_){return _4S(function(_D7,_){var _D8=A(_CX,[_D7,_]);return [0,[0,_zh,new T(function(){var _D9=E(E(_D8)[1]);return _D9[0]==0?E([1,_CZ]):E(_D9);})],new T(function(){return E(E(_D8)[2]);})];},_Cg,_Cm,_);};},_D3[2],_),_Da=E(_D5),_Db=E(_Da[1]),_Dc=new T(function(){return _z8(_11,function(_Dd,_){var _De=A(_D4[1],[_Dd,_]),_Df=A(_Db[1],[_Dd,_]);return _Dd;});});return [0,[0,function(_Dg,_){var _Dh=A(_zk,[_Dg,_]),_Di=_G(_Dg,_),_Dj=A(_Dc,[_Dg,_]);return _Dg;},new T(function(){var _Dk=E(_D4[2]);return _Dk[0]==0?E(_Db[2]):E(_Dk);})],_Da[2]];};},_Dl=new T(function(){return _CY(_vY);}),_Dm=[0,4],_Dn=function(_Do,_Dp){return [1,_Dp,new T(function(){return _Dn(_Do,new T(function(){return A(_Do,[_Dp]);}));})];},_Dq=[0,1],_Dr=[1,_Dq,_g],_Ds=[1,_wy,_g],_Dt=function(_Du,_Dv,_Dw){var _Dx=E(_Dv);if(!_Dx[0]){return [0];}else{var _Dy=E(_Dw);return _Dy[0]==0?[0]:[1,new T(function(){return A(_Du,[_Dx[1],_Dy[1]]);}),new T(function(){return _Dt(_Du,_Dx[2],_Dy[2]);})];}},_Dz=function(_DA){return _Dt(_wR,[1,_wy,_DA],new T(function(){return _2l(_DA,_Ds);}));},_DB=new T(function(){return _Dn(_Dz,_Dr);}),_DC=unCStr(" rows of the Pascal triangle "),_DD=function(_DE){var _DF=new T(function(){return _3b(_yg,_DE,_g);});return function(_ah,_A5){return _z(_DF,_ah,_A5);};},_DG=unCStr("text-align:center"),_DH=unCStr("style"),_DI=function(_DJ,_DK){var _DL=new T(function(){return _w1(_DD,_DJ);});return [1,function(_DM,_){var _DN=A(_DL,[_DM,_]),_DO=A(_1g,[_1m,_DN,_DH,_DG,_]);return _DN;},_DK];},_DP=function(_DQ,_DR){var _DS=E(_DQ);if(!_DS[0]){return [0];}else{var _DT=_DS[1];return _DR>1?_DI(_DT,new T(function(){return _DP(_DS[2],_DR-1|0);})):_DI(_DT,_g);}},_DU=function(_DV){var _DW=new T(function(){return _w1(_z,new T(function(){return unAppCStr("Show ",new T(function(){return _2l(_4i(0,E(_DV)[1],_g),_DC);}));}));});return function(_DX,_){return [0,[0,function(_DY,_){var _DZ=A(_DW,[_DY,_]),_E0=_8f(new T(function(){var _E1=E(_DV)[1];return _E1>0?_DP(_DB,_E1):[0];}),_DY,_);return _DY;},_9],_DX];};},_E2=new T(function(){return _DU(_Dm);}),_E3=unCStr("Different input elements:"),_E4=new T(function(){return _w1(_z,_E3);}),_E5=unCStr(" returns: "),_E6=function(_E7){var _E8=new T(function(){return _we(_z,[1,_E,new T(function(){return _s5(_E7,_K);})]);});return function(_E9,_){return [0,[0,function(_Ea,_){var _Eb=_z(_E5,_Ea,_),_Ec=A(_E8,[_Ea,_]);return _Ea;},_Cf],_E9];};},_Ed=unCStr("blue"),_Ee=[1,_Ed,_g],_Ef=unCStr("green"),_Eg=[1,_Ef,_Ee],_Eh=unCStr("red"),_Ei=[1,_Eh,_Eg],_Ej=function(_Ek){return E(E(_Ek)[15]);},_El=function(_Em,_En,_){var _Eo=jsGet(_Em,toJSStr(E(_En)));return new T(function(){return fromJSStr(_Eo);});},_Ep=function(_Eq,_Er,_){return _El(E(_Eq)[1],_Er,_);},_Es=unCStr("radio"),_Et=new T(function(){return A(_94,[_6u]);}),_Eu=unCStr("name"),_Ev=unCStr("true"),_Ew=function(_Ex,_Ey,_Ez,_EA){var _EB=new T(function(){return _8w(_Ey);}),_EC=new T(function(){return _4n([0,coercionToken],_45(_EB),function(_ED){return _b2(_EB,_ED);},function(_EE,_EF){return _b7(_EB,_EE,_EF);});}),_EG=new T(function(){return _43(_EB);}),_EH=new T(function(){return _43(_EB);}),_EI=new T(function(){return _3D(_EB);}),_EJ=new T(function(){return _3D(_EB);}),_EK=new T(function(){return _43(_EB);}),_EL=new T(function(){return _3D(_EB);}),_EM=new T(function(){return _43(_EB);}),_EN=new T(function(){return _3D(_EB);}),_EO=new T(function(){return _b0(_Ex);}),_EP=new T(function(){return _Ej(_Ex);}),_EQ=new T(function(){return _bb(_EA);});return function(_ER,_ES){return function(_ET){return A(_EI,[new T(function(){return A(_EC,[_ET]);}),function(_EU){var _EV=new T(function(){return E(E(_EU)[1]);}),_EW=new T(function(){return _8A(_Ey,function(_){return jsFind(toJSStr(E(_EV)));});});return A(_EN,[new T(function(){var _EX=new T(function(){return E(E(_EU)[2]);});return A(_EM,[[0,_EX,_EX]]);}),function(_EY){return A(_EL,[new T(function(){return A(_EK,[[0,_1f,new T(function(){var _EZ=E(E(_EY)[1]);return [0,_EZ[1],_EZ[2],_aZ,_EZ[4],_EZ[5],_EZ[6]];})]]);}),function(_F0){return A(_EJ,[new T(function(){return A(_EW,[new T(function(){return E(E(_F0)[2]);})]);}),function(_F1){return A(_EI,[new T(function(){var _F2=E(_F1),_F3=_F2[2],_F4=E(_F2[1]);return _F4[0]==0?A(_EH,[[0,_g,_F3]]):A(_8A,[_Ey,function(_){return _Ep(_F4[1],_6I,_);},_F3]);}),function(_F5){var _F6=new T(function(){return !_tj(E(_F5)[1],_Ev)?[0]:E([1,_ER]);});return A(_EG,[[0,[0,new T(function(){return A(_EP,[new T(function(){return A(_EO,[_EV,_Es,new T(function(){var _F7=A(_Ez,[_ER]),_F8=E(_Et),_F9=hs_eqWord64(_F7[1],_F8[1]);if(!E(_F9)){return A(_EQ,[_ER]);}else{var _Fa=hs_eqWord64(_F7[2],_F8[2]);return E(_Fa)==0?A(_EQ,[_ER]):E(_ER);}}),new T(function(){return E(_F6)[0]==0?false:true;}),_9]);}),[1,[0,_Eu,_ES],_g]]);}),new T(function(){var _Fb=E(_F6);return _Fb[0]==0?[0]:[1,_Fb[1]];})],new T(function(){return E(E(_F5)[2]);})]]);}]);}]);}]);}]);}]);};};},_Fc=new T(function(){return _6v(_8X,_92);}),_Fd=new T(function(){return _sv(_sl);}),_Fe=new T(function(){return _Ew(_8s,_8t,_Fc,_Fd);}),_Ff=function(_Fg){var _Fh=E(_Fg);if(!_Fh[0]){return [0];}else{var _Fi=_Fh[1];return [1,function(_Fj){var _Fk=new T(function(){return _tU(new T(function(){return A(_Fe,[_Fi,_Fj]);}),_zl);});return function(_Fl,_){var _Fm=A(_Fk,[_Fl,_]),_Fn=E(_Fm),_Fo=E(_Fn[1]);return [0,[0,function(_Fp,_){var _Fq=_z(_Fi,_Fp,_),_Fr=A(_Fo[1],[_Fp,_]);return _Fp;},_Fo[2]],_Fn[2]];};},new T(function(){return _Ff(_Fh[2]);})];}},_Fs=new T(function(){return _Ff(_Ei);}),_Ft=function(_Fu){return E(E(_Fu)[1]);},_Fv=function(_Fw,_Fx){var _Fy=new T(function(){return _8u(_Fx);}),_Fz=new T(function(){return _Ft(_Fy);}),_FA=new T(function(){return _b5(_Fy);}),_FB=function(_FC){var _FD=E(_FC);if(!_FD[0]){return [0,_Fz,_9];}else{var _FE=E(_FD[1]),_FF=_FB(_FD[2]);return [0,new T(function(){return A(_FA,[_FE[1],_FF[1]]);}),new T(function(){var _FG=E(_FE[2]);return _FG[0]==0?E(_FF[2]):E(_FG);})];}},_FH=new T(function(){return _43(_Fw);}),_FI=new T(function(){return _4n([0,coercionToken],_45(_Fw),function(_FJ){return _b2(_Fw,_FJ);},function(_FK,_FL){return _b7(_Fw,_FK,_FL);});}),_FM=new T(function(){return _43(_Fw);}),_FN=new T(function(){return _3D(_Fw);}),_FO=new T(function(){return _3D(_Fw);}),_FP=new T(function(){return _3D(_Fw);}),_FQ=new T(function(){return _3D(_Fw);});return function(_FR,_FS){return A(_FQ,[new T(function(){return A(_FI,[_FS]);}),function(_FT){return A(_FP,[new T(function(){var _FU=new T(function(){return E(E(_FT)[1]);}),_FV=function(_FW){var _FX=E(_FW);if(!_FX[0]){return function(_FY){return A(_FM,[[0,_g,_FY]]);};}else{var _FZ=new T(function(){return _FV(_FX[2]);}),_G0=new T(function(){return A(_FX[1],[_FU]);});return function(_G1){return A(_FO,[new T(function(){return A(_G0,[_G1]);}),function(_G2){var _G3=new T(function(){return E(E(_G2)[1]);});return A(_FN,[new T(function(){return A(_FZ,[new T(function(){return E(E(_G2)[2]);})]);}),function(_G4){return A(_FM,[[0,[1,_G3,new T(function(){return E(E(_G4)[1]);})],new T(function(){return E(E(_G4)[2]);})]]);}]);}]);};}};return A(_FV,[_FR,new T(function(){return E(E(_FT)[2]);})]);}),function(_G5){var _G6=new T(function(){var _G7=_FB(E(_G5)[1]);return [0,_G7[1],_G7[2]];});return A(_FH,[[0,[0,new T(function(){return E(E(_G6)[1]);}),new T(function(){var _G8=E(E(_G6)[2]);return _G8[0]==0?[0]:[1,_G8[1]];})],new T(function(){return E(E(_G5)[2]);})]]);}]);}]);};},_G9=new T(function(){return _Fv(_3C,_8s);}),_Ga=new T(function(){return A(_G9,[_Fs]);}),_Gb=function(_Gc){var _Gd=new T(function(){return _we(_z,new T(function(){return _3b(_sb,_Gc,_g);}));});return function(_Ge,_){return [0,[0,function(_Gf,_){var _Gg=_z(_E5,_Gf,_),_Gh=A(_Gd,[_Gf,_]);return _Gf;},_Cf],_Ge];};},_Gi=new T(function(){return _we(_z,_Ef);}),_Gj=unCStr("checkbox"),_Gk=function(_Gl,_Gm){var _Gn=new T(function(){return _8w(_Gm);}),_Go=new T(function(){return _4n([0,coercionToken],_45(_Gn),function(_Gp){return _b2(_Gn,_Gp);},function(_Gq,_Gr){return _b7(_Gn,_Gq,_Gr);});}),_Gs=new T(function(){return _43(_Gn);}),_Gt=new T(function(){return _43(_Gn);}),_Gu=new T(function(){return _3D(_Gn);}),_Gv=new T(function(){return _3D(_Gn);}),_Gw=new T(function(){return _43(_Gn);}),_Gx=new T(function(){return _3D(_Gn);}),_Gy=new T(function(){return _43(_Gn);}),_Gz=new T(function(){return _3D(_Gn);}),_GA=new T(function(){return _b0(_Gl);});return function(_GB,_GC){var _GD=new T(function(){return !E(_GB)?[0]:E(_Ev);});return function(_GE){return A(_Gu,[new T(function(){return A(_Go,[_GE]);}),function(_GF){var _GG=new T(function(){return E(E(_GF)[1]);}),_GH=new T(function(){return _8A(_Gm,function(_){return jsFind(toJSStr(E(_GG)));});}),_GI=new T(function(){return A(_GA,[_GG,_Gj,_GC,_GB,_9]);});return A(_Gz,[new T(function(){var _GJ=new T(function(){return E(E(_GF)[2]);});return A(_Gy,[[0,_GJ,_GJ]]);}),function(_GK){return A(_Gx,[new T(function(){return A(_Gw,[[0,_1f,new T(function(){var _GL=E(E(_GK)[1]);return [0,_GL[1],_GL[2],_aZ,_GL[4],_GL[5],_GL[6]];})]]);}),function(_GM){return A(_Gv,[new T(function(){return A(_GH,[new T(function(){return E(E(_GM)[2]);})]);}),function(_GN){return A(_Gu,[new T(function(){var _GO=E(_GN),_GP=_GO[2],_GQ=E(_GO[1]);return _GQ[0]==0?A(_Gt,[[0,_GD,_GP]]):A(_8A,[_Gm,function(_){return _Ep(_GQ[1],_6I,_);},_GP]);}),function(_GR){return A(_Gs,[[0,[0,_GI,[1,[0,new T(function(){return !_tj(E(_GR)[1],_Ev)?[0]:E([1,_GC,_g]);})]]],new T(function(){return E(E(_GR)[2]);})]]);}]);}]);}]);}]);}]);};};},_GS=new T(function(){return _Gk(_8s,_8t);}),_GT=unCStr("Green"),_GU=new T(function(){return A(_GS,[_0,_GT]);}),_GV=function(_GW,_){var _GX=A(_GU,[_GW,_]),_GY=E(_GX),_GZ=E(_GY[1]);return [0,[0,function(_H0,_){var _H1=A(_GZ[1],[_H0,_]),_H2=A(_Gi,[_H0,_]);return _H0;},_GZ[2]],_GY[2]];},_H3=new T(function(){return _tU(_GV,_zl);}),_H4=new T(function(){return _we(_z,_Ed);}),_H5=new T(function(){return A(_GS,[_0,_Ed]);}),_H6=function(_H7,_){var _H8=A(_H5,[_H7,_]),_H9=E(_H8),_Ha=E(_H9[1]);return [0,[0,function(_Hb,_){var _Hc=A(_Ha[1],[_Hb,_]),_Hd=A(_H4,[_Hb,_]);return _Hb;},_Ha[2]],_H9[2]];},_He=new T(function(){return _tU(_H6,_zl);}),_Hf=new T(function(){return _we(_z,_Eh);}),_Hg=unCStr("Red"),_Hh=new T(function(){return A(_GS,[_0,_Hg]);}),_Hi=function(_Hj,_){var _Hk=A(_Hh,[_Hj,_]),_Hl=E(_Hk),_Hm=E(_Hl[1]);return [0,[0,function(_Hn,_){var _Ho=A(_Hm[1],[_Hn,_]),_Hp=A(_Hf,[_Hn,_]);return _Hn;},_Hm[2]],_Hl[2]];},_Hq=new T(function(){return _tU(_Hi,_zl);}),_Hr=function(_Hs,_){var _Ht=A(_Hq,[_Hs,_]),_Hu=E(_Ht),_Hv=E(_Hu[1]),_Hw=A(_H3,[_Hu[2],_]),_Hx=E(_Hw),_Hy=E(_Hx[1]),_Hz=A(_He,[_Hx[2],_]),_HA=E(_Hz),_HB=E(_HA[1]);return [0,[0,function(_HC,_){var _HD=A(_Hv[1],[_HC,_]),_HE=A(_Hy[1],[_HC,_]),_HF=A(_HB[1],[_HC,_]);return _HC;},new T(function(){var _HG=E(_Hv[2]);if(!_HG[0]){return [0];}else{var _HH=E(_Hy[2]);if(!_HH[0]){return [0];}else{var _HI=E(_HB[2]);return _HI[0]==0?[0]:[1,new T(function(){var _HJ=function(_HK){var _HL=E(_HK);return _HL[0]==0?E(new T(function(){var _HM=function(_HN){var _HO=E(_HN);return _HO[0]==0?E(E(_HI[1])[1]):[1,_HO[1],new T(function(){return _HM(_HO[2]);})];};return _HM(E(_HH[1])[1]);})):[1,_HL[1],new T(function(){return _HJ(_HL[2]);})];};return _HJ(E(_HG[1])[1]);})];}}})],_HA[2]];},_HP=function(_HQ){var _HR=new T(function(){return _we(_z,[1,_E,new T(function(){return _s5(_HQ,_K);})]);});return function(_HS,_){return [0,[0,function(_HT,_){var _HU=_z(_E5,_HT,_),_HV=A(_HR,[_HT,_]);return _HT;},_Cf],_HS];};},_HW=new T(function(){return _ql(_q7);}),_HX=function(_HY){return E(E(_HY)[11]);},_HZ=function(_I0,_I1,_I2,_I3){var _I4=new T(function(){return _8w(_I1);}),_I5=new T(function(){return _45(_I4);}),_I6=new T(function(){return _4n([0,coercionToken],_I5,function(_I7){return _b2(_I4,_I7);},function(_I8,_I9){return _b7(_I4,_I8,_I9);});}),_Ia=new T(function(){return _43(_I4);}),_Ib=new T(function(){return _3D(_I4);}),_Ic=new T(function(){return _3D(_I4);}),_Id=new T(function(){return _43(_I4);}),_Ie=new T(function(){return _3D(_I4);}),_If=new T(function(){return _43(_I4);}),_Ig=new T(function(){return _3D(_I4);}),_Ih=new T(function(){return _3D(_I4);}),_Ii=new T(function(){return _HX(_I0);});return function(_Ij,_Ik){return A(_Ih,[new T(function(){return A(_I6,[_Ik]);}),function(_Il){var _Im=new T(function(){return E(E(_Il)[1]);}),_In=new T(function(){return _ax(_I5,function(_Io){return _8A(_I1,_Io);},_I2,_I3,_I0,_Im);});return A(_Ig,[new T(function(){var _Ip=new T(function(){return E(E(_Il)[2]);});return A(_If,[[0,_Ip,_Ip]]);}),function(_Iq){return A(_Ie,[new T(function(){return A(_Id,[[0,_1f,new T(function(){var _Ir=E(E(_Iq)[1]);return [0,_Ir[1],_Ir[2],_aZ,_Ir[4],_Ir[5],_Ir[6]];})]]);}),function(_Is){return A(_Ic,[new T(function(){return A(_In,[new T(function(){return E(E(_Is)[2]);})]);}),function(_It){return A(_Ib,[new T(function(){return A(_Ij,[new T(function(){return E(E(_It)[2]);})]);}),function(_Iu){var _Iv=E(_Iu);return A(_Ia,[[0,[0,new T(function(){return A(_Ii,[_Im,E(_Iv[1])[1]]);}),new T(function(){var _Iw=E(E(_It)[1]);return _Iw[0]==2?[1,_Iw[1]]:[0];})],_Iv[2]]]);}]);}]);}]);}]);}]);};},_Ix=new T(function(){return _HZ(_8s,_8t,_Fc,_HW);}),_Iy=new T(function(){return _s5(_Ed,_K);}),_Iz=new T(function(){return _s5(_Ed,_K);}),_IA=new T(function(){return A(_94,[_6u]);}),_IB=new T(function(){var _IC=A(_Fc,[_Ed]),_ID=E(_IA),_IE=hs_eqWord64(_IC[1],_ID[1]);if(!E(_IE)){return [1,_E,_Iy];}else{var _IF=hs_eqWord64(_IC[2],_ID[2]);return E(_IF)==0?[1,_E,_Iz]:E(_Ed);}}),_IG=[0,_6G,_IB],_IH=[1,_IG,_g],_II=new T(function(){return _1v(_7d,_IH);}),_IJ=new T(function(){return _s5(_Ef,_K);}),_IK=new T(function(){return _s5(_Ef,_K);}),_IL=new T(function(){var _IM=A(_Fc,[_Ef]),_IN=E(_IA),_IO=hs_eqWord64(_IM[1],_IN[1]);if(!E(_IO)){return [1,_E,_IJ];}else{var _IP=hs_eqWord64(_IM[2],_IN[2]);return E(_IP)==0?[1,_E,_IK]:E(_Ef);}}),_IQ=[0,_6G,_IL],_IR=[1,_IQ,_g],_IS=new T(function(){return _1v(_7d,_IR);}),_IT=new T(function(){return _s5(_Eh,_K);}),_IU=new T(function(){return _s5(_Eh,_K);}),_IV=new T(function(){var _IW=A(_Fc,[_Eh]),_IX=E(_IA),_IY=hs_eqWord64(_IW[1],_IX[1]);if(!E(_IY)){return [1,_E,_IT];}else{var _IZ=hs_eqWord64(_IW[2],_IX[2]);return E(_IZ)==0?[1,_E,_IU]:E(_Eh);}}),_J0=[0,_6G,_IV],_J1=[1,_J0,_g],_J2=new T(function(){return _1v(_7d,_J1);}),_J3=function(_J4,_){var _J5=A(_J2,[_J4,_]),_J6=_z(_Eh,_J5,_),_J7=A(_IS,[_J4,_]),_J8=_z(_Ef,_J7,_),_J9=A(_II,[_J4,_]),_Ja=_z(_Ed,_J9,_);return _J4;},_Jb=[1,_Eh],_Jc=[0,_J3,_Jb],_Jd=function(_Je,_){return [0,_Jc,_Je];},_Jf=new T(function(){return A(_Ix,[_Jd]);}),_Jg=new T(function(){return _tU(_Jf,_zl);}),_Jh=function(_Ji,_){var _Jj=_4S(_Hr,_Gb,_Ji,_),_Jk=E(_Jj),_Jl=_4S(_Ga,_E6,_Jk[2],_),_Jm=E(_Jl),_Jn=_4S(_Jg,_HP,_Jm[2],_),_Jo=E(_Jn),_Jp=E(_Jo[1]);return [0,[0,function(_Jq,_){var _Jr=A(_E4,[_Jq,_]),_Js=A(E(_Jk[1])[1],[_Jq,_]),_Jt=_G(_Jq,_),_Ju=_G(_Jq,_),_Jv=A(E(_Jm[1])[1],[_Jq,_]),_Jw=_G(_Jq,_),_Jx=_G(_Jq,_),_Jy=A(_Jp[1],[_Jq,_]),_Jz=_G(_Jq,_);return _Jq;},_Jp[2]],_Jo[2]];},_JA=unCStr("This example draw a function of x between 10 and -10. You can define the function using javascript expressions"),_JB=new T(function(){return _w1(_z,_JA);}),_JC=function(_JD){var _JE=jsShow(E(_JD)[1]);return fromJSStr(_JE);},_JF=function(_JG){var _JH=new T(function(){return _JC(_JG);});return function(_ah){return _2l(_JH,_ah);};},_JI=function(_JJ,_JK,_JL){var _JM=E(_JL);if(!_JM[0]){return [0];}else{var _JN=_JM[2],_JO=E(_JM[1]);return _JJ!=_JO[1]?[1,_JO,new T(function(){return _JI(_JJ,_JK,_JN);})]:_2l(_JK,new T(function(){return _JI(_JJ,_JK,_JN);}));}},_JP=[0,45],_JQ=function(_JR,_JS,_JT){var _JU=new T(function(){return A(_JR,[[0, -_JT]]);}),_JV=new T(function(){return E(_JS)[1]<=6?function(_JW){return [1,_JP,new T(function(){return A(_JU,[_JW]);})];}:function(_JX){return [1,_4h,[1,_JP,new T(function(){return A(_JU,[[1,_4g,_JX]]);})]];};});if(_JT>=0){var _JY=isDoubleNegativeZero(_JT);return E(_JY)==0?A(_JR,[[0,_JT]]):E(_JV);}else{return E(_JV);}},_JZ=unCStr("canvas"),_K0=unCStr("id"),_K1=unCStr("canvas"),_K2=function(_K3,_K4){var _K5=new T(function(){return A(_K3,[_K4]);});return function(_K6,_){var _K7=jsCreateElem(toJSStr(E(_K1))),_K8=jsAppendChild(_K7,E(_K6)[1]),_K9=[0,_K7],_Ka=A(_K5,[_K9,_]);return _K9;};},_Kb=new T(function(){return _K2(_11,_Z);}),_Kc=function(_Kd,_){var _Ke=A(_Kb,[_Kd,_]),_Kf=A(_1g,[_1m,_Ke,_K0,_JZ,_]);return _Ke;},_Kg=[0,_Kc,_Cf],_Kh=function(_Ki,_){return [0,_Kg,_Ki];},_Kj=unCStr("Pattern match failure in do expression at main.hs:190:5-12"),_Kk=function(_Kl,_Km){while(1){var _Kn=E(_Km);if(!_Kn[0]){return false;}else{if(!A(_Kl,[_Kn[1]])){_Km=_Kn[2];continue;}else{return true;}}}},_Ko=unCStr("x*x+x+10;"),_Kp=new T(function(){return [0,"(function(exp){ return eval(exp);})"];}),_Kq=new T(function(){return _5(_Kp);}),_Kr=function(_Ks,_){var _Kt=jsHasCtx2D(_Ks);if(!E(_Kt)){return _9;}else{var _Ku=jsGetCtx2D(_Ks);return [1,[0,[0,_Ku],[0,_Ks]]];}},_Kv=function(_Kw,_){return _Kr(E(_Kw)[1],_);},_Kx=function(_Ky,_Kz){return A(_Ky,[function(_){var _KA=jsFind(toJSStr(E(_Kz))),_KB=E(_KA);return _KB[0]==0?_9:_Kv(_KB[1],_);}]);},_KC=new T(function(){return _Kx(_1m,_JZ);}),_KD=[0,-10],_KE=[0,0],_KF=[0,_KD,_KE],_KG=[0,10],_KH=[0,_KG,_KE],_KI=[1,_KH,_g],_KJ=[1,_KF,_KI],_KK=function(_KL,_){return _1f;},_KM=function(_KN){var _KO=E(_KN);if(!_KO[0]){return E(_KK);}else{var _KP=E(_KO[1]);return function(_KQ,_){var _KR=E(_KQ)[1],_KS=jsMoveTo(_KR,E(_KP[1])[1],E(_KP[2])[1]);return (function(_KT,_){while(1){var _KU=E(_KT);if(!_KU[0]){return _1f;}else{var _KV=E(_KU[1]),_KW=jsLineTo(_KR,E(_KV[1])[1],E(_KV[2])[1]);_KT=_KU[2];continue;}}})(_KO[2],_);};}},_KX=new T(function(){return _KM(_KJ);}),_KY=[0,30],_KZ=[0,_KE,_KY],_L0=[0,-30],_L1=[0,_KE,_L0],_L2=[1,_L1,_g],_L3=[1,_KZ,_L2],_L4=new T(function(){return _KM(_L3);}),_L5=function(_L6,_L7,_L8){while(1){var _L9=E(_L7);if(!_L9[0]){return true;}else{var _La=E(_L8);if(!_La[0]){return false;}else{if(!A(_dy,[_L6,_L9[1],_La[1]])){return false;}else{_L7=_L9[2];_L8=_La[2];continue;}}}}},_Lb=unCStr("alert"),_Lc=function(_Ld){return _L5(_dx,_Lb,_Ld);},_Le=new T(function(){return [0,0/0];}),_Lf=new T(function(){return [0,-1/0];}),_Lg=new T(function(){return [0,1/0];}),_Lh=[0,0],_Li=function(_Lj,_Lk){while(1){var _Ll=E(_Lj);if(!_Ll[0]){_Lj=[1,I_fromInt(_Ll[1])];continue;}else{var _Lm=E(_Lk);if(!_Lm[0]){_Lj=_Ll;_Lk=[1,I_fromInt(_Lm[1])];continue;}else{return I_fromRat(_Ll[1],_Lm[1]);}}}},_Ln=function(_Lo,_Lp){var _Lq=E(_Lo);if(!_Lq[0]){var _Lr=_Lq[1],_Ls=E(_Lp);return _Ls[0]==0?_Lr==_Ls[1]:I_compareInt(_Ls[1],_Lr)==0?true:false;}else{var _Lt=_Lq[1],_Lu=E(_Lp);return _Lu[0]==0?I_compareInt(_Lt,_Lu[1])==0?true:false:I_compare(_Lt,_Lu[1])==0?true:false;}},_Lv=function(_Lw,_Lx){var _Ly=E(_Lw);if(!_Ly[0]){var _Lz=_Ly[1],_LA=E(_Lx);return _LA[0]==0?_Lz<_LA[1]:I_compareInt(_LA[1],_Lz)>0;}else{var _LB=_Ly[1],_LC=E(_Lx);return _LC[0]==0?I_compareInt(_LB,_LC[1])<0:I_compare(_LB,_LC[1])<0;}},_LD=function(_LE,_LF){return !_Ln(_LF,_Lh)?[0,_Li(_LE,_LF)]:!_Ln(_LE,_Lh)?!_Lv(_LE,_Lh)?E(_Lg):E(_Lf):E(_Le);},_LG=function(_LH){var _LI=E(_LH);return _LD(_LI[1],_LI[2]);},_LJ=function(_LK){return [0,1/E(_LK)[1]];},_LL=function(_LM){var _LN=E(_LM),_LO=_LN[1];return _LO<0?[0, -_LO]:E(_LN);},_LP=function(_LQ){var _LR=E(_LQ);return _LR[0]==0?_LR[1]:I_toNumber(_LR[1]);},_LS=function(_LT){return [0,_LP(_LT)];},_LU=[0,0],_LV=[0,1],_LW=[0,-1],_LX=function(_LY){var _LZ=E(_LY)[1];return _LZ!=0?_LZ<=0?E(_LW):E(_LV):E(_LU);},_M0=function(_M1,_M2){return [0,E(_M1)[1]-E(_M2)[1]];},_M3=function(_M4){return [0, -E(_M4)[1]];},_M5=function(_M6,_M7){return [0,E(_M6)[1]+E(_M7)[1]];},_M8=function(_M9,_Ma){return [0,E(_M9)[1]*E(_Ma)[1]];},_Mb=[0,_M5,_M8,_M0,_M3,_LL,_LX,_LS],_Mc=function(_Md,_Me){return [0,E(_Md)[1]/E(_Me)[1]];},_Mf=[0,_Mb,_Mc,_LJ,_LG],_Mg=function(_Mh,_Mi){return E(_Mh)[1]!=E(_Mi)[1]?true:false;},_Mj=function(_Mk,_Ml){return E(_Mk)[1]==E(_Ml)[1];},_Mm=[0,_Mj,_Mg],_Mn=function(_Mo,_Mp){return E(_Mo)[1]<E(_Mp)[1];},_Mq=function(_Mr,_Ms){return E(_Mr)[1]<=E(_Ms)[1];},_Mt=function(_Mu,_Mv){return E(_Mu)[1]>E(_Mv)[1];},_Mw=function(_Mx,_My){return E(_Mx)[1]>=E(_My)[1];},_Mz=function(_MA,_MB){var _MC=E(_MA)[1],_MD=E(_MB)[1];return _MC>=_MD?_MC!=_MD?2:1:0;},_ME=function(_MF,_MG){var _MH=E(_MF),_MI=E(_MG);return _MH[1]>_MI[1]?E(_MH):E(_MI);},_MJ=function(_MK,_ML){var _MM=E(_MK),_MN=E(_ML);return _MM[1]>_MN[1]?E(_MN):E(_MM);},_MO=[0,_Mm,_Mz,_Mn,_Mw,_Mt,_Mq,_ME,_MJ],_MP=[0,1],_MQ=function(_MR){return E(E(_MR)[1]);},_MS=function(_MT){return E(E(_MT)[2]);},_MU=function(_MV){return E(E(_MV)[6]);},_MW=[0,2],_MX=function(_MY,_MZ){var _N0=E(_MZ);return [1,_N0,new T(function(){var _N1=_MQ(_MY);return _MX(_MY,A(_N1[1],[_N0,new T(function(){return A(_N1[7],[_MP]);})]));})];},_N2=function(_N3,_N4){var _N5=E(_N4);if(!_N5[0]){return [0];}else{var _N6=_N5[1];return !A(_N3,[_N6])?[0]:[1,_N6,new T(function(){return _N2(_N3,_N5[2]);})];}},_N7=function(_N8,_N9,_Na,_Nb){var _Nc=new T(function(){return _MU(_N8);});return _N2(function(_Nd){return A(_Nc,[_Nd,new T(function(){var _Ne=_MQ(_N9),_Nf=_Ne[7];return A(_Ne[1],[_Nb,new T(function(){return A(_MS,[_N9,new T(function(){return A(_Nf,[_MP]);}),new T(function(){return A(_Nf,[_MW]);})]);})]);})]);},_MX(_N9,_Na));},_Ng=new T(function(){return _N7(_MO,_Mf,_KD,_KG);}),_Nh=function(_Ni){return [1,_Ni,new T(function(){var _Nj=E(_Ni);return _Nj[0]==0?[0]:_Nh(_Nj[2]);})];},_Nk=function(_Nl,_Nm){var _Nn=E(_Nl);if(!_Nn[0]){return [0];}else{var _No=E(_Nm);return _No[0]==0?[0]:[1,[0,_Nn[1],_No[1]],new T(function(){return _Nk(_Nn[2],_No[2]);})];}},_Np=function(_Nq){var _Nr=new T(function(){return !_Kk(_Lc,_Nh(_Nq))?E(_Nq):E(_Ko);}),_Ns=function(_Nt,_){var _Nu=E(_Nt);if(!_Nu[0]){return _g;}else{var _Nv=A(_Kq,[E(toJSStr(_JI(120,new T(function(){return A(_JQ,[_JF,_98,E(_Nu[1])[1],_g]);}),_Nr))),_]),_Nw=_Ns(_Nu[2],_);return [1,[0,_Nv],_Nw];}};return function(_ah,_A5){return _4S(_Kh,function(_Nx,_Cm,_){return (function(_Ny,_){return [0,[0,function(_Nz,_){var _NA=A(_KC,[_]),_NB=E(_NA);if(!_NB[0]){var _NC=_3A(_Kj,_);return _Nz;}else{var _ND=_Ns(_Ng,_),_NE=E(_NB[1]),_NF=jsResetCanvas(E(_NE[2])[1]),_NG=E(_NE[1]),_NH=_NG[1],_NI=jsPushState(_NH),_NJ=jsScale(_NH,3,1),_NK=jsPushState(_NH),_NL=jsTranslate(_NH,50,130),_NM=jsPushState(_NH),_NN=jsRotate(_NH,3.141592653589793),_NO=jsBeginPath(_NH),_NP=A(_KX,[_NG,_]),_NQ=A(_L4,[_NG,_]),_NR=A(_KM,[_Nk(_Ng,_ND),_NG,_]),_NS=jsStroke(_NH),_NT=jsPopState(_NH),_NU=jsPopState(_NH),_NV=jsPopState(_NH);return _Nz;}},_Cf],_Ny];})(_Cm,_);},_ah,_A5);};},_NW=[1,_Ko],_NX=new T(function(){return _bd(_8s,_8t,_94,_sA,_qp);}),_NY=new T(function(){return A(_NX,[_9,_sC,_NW]);}),_NZ=new T(function(){return _tU(_NY,_xC);}),_O0=function(_O1,_){var _O2=A(_NZ,[_O1,_]),_O3=E(_O2),_O4=E(_O3[1]);return [0,[0,function(_O5,_){var _O6=A(_O4[1],[_O5,_]),_O7=_G(_O5,_);return _O5;},new T(function(){var _O8=E(_O4[2]);return _O8[0]==0?E(_NW):E(_O8);})],_O3[2]];},_O9=function(_Oa,_){var _Ob=_4S(_O0,_Np,_Oa,_),_Oc=E(_Ob),_Od=E(_Oc[1]),_Oe=new T(function(){return _z8(_11,_Od[1]);});return [0,[0,function(_Of,_){var _Og=A(_JB,[_Of,_]),_Oh=A(_Oe,[_Of,_]);return _Of;},_Od[2]],_Oc[2]];},_Oi=unCStr("work?"),_Oj=new T(function(){return _Ew(_8s,_8t,_Fc,_Fd);}),_Ok=function(_Ol){return E(E(_Ol)[5]);},_Om=unCStr("for"),_On=unCStr("label"),_Oo=function(_Op,_Oq,_Or,_Os){var _Ot=new T(function(){return A(_Ok,[_Oq,_On,_Or]);}),_Ou=new T(function(){return _8u(_Oq);}),_Ov=new T(function(){return _b5(_Ou);}),_Ow=new T(function(){return _43(_Op);}),_Ox=new T(function(){return _3D(_Op);}),_Oy=new T(function(){return _Ej(_Oq);}),_Oz=new T(function(){return _43(_Op);}),_OA=new T(function(){return _43(_Op);}),_OB=new T(function(){return _3D(_Op);}),_OC=new T(function(){return _3D(_Op);});return function(_OD){return A(_OC,[new T(function(){return A(_OB,[new T(function(){return A(_OA,[[0,_OD,_OD]]);}),function(_OE){return A(_Oz,[[0,[1,_4b,new T(function(){var _OF=E(E(_OE)[1]);return _2l(_4i(0,E(_OF[2])[1],_g),_OF[1]);})],new T(function(){return E(E(_OE)[2]);})]]);}]);}),function(_OG){var _OH=new T(function(){return A(_Oy,[_Ot,[1,[0,_Om,new T(function(){return E(E(_OG)[1]);})],_g]]);});return A(_Ox,[new T(function(){return A(_Os,[new T(function(){return E(E(_OG)[2]);})]);}),function(_OI){var _OJ=E(_OI),_OK=E(_OJ[1]);return A(_Ow,[[0,[0,new T(function(){return A(_Ov,[_OH,_OK[1]]);}),_OK[2]],_OJ[2]]]);}]);}]);};},_OL=function(_OM,_ON){return _Oo(_3C,_8s,function(_Cm,_){return _z(_OM,_Cm,_);},new T(function(){return _tU(new T(function(){return A(_Oj,[_OM,_ON]);}),_zl);}));},_OO=function(_Ld){return _OL(_Oi,_Ld);},_OP=unCStr("study?"),_OQ=function(_Ld){return _OL(_OP,_Ld);},_OR=[1,_OQ,_g],_OS=[1,_OO,_OR],_OT=new T(function(){return A(_G9,[_OS]);}),_OU=unCStr("Do you "),_OV=new T(function(){return _we(_z,_OU);}),_OW=function(_OX,_){var _OY=A(_OT,[_OX,_]),_OZ=E(_OY),_P0=E(_OZ[1]);return [0,[0,function(_P1,_){var _P2=A(_OV,[_P1,_]),_P3=A(_P0[1],[_P1,_]),_P4=_G(_P1,_);return _P1;},_P0[2]],_OZ[2]];},_P5=unCStr("do you enjoy your work? "),_P6=new T(function(){return _we(_z,_P5);}),_P7=function(_P8,_P9,_Pa,_){return _4S(_P8,function(_Pb){return E(_P9);},_Pa,_);},_Pc=function(_Pd,_Pe,_1C,_){return _P7(_Pd,_Pe,_1C,_);},_Pf=function(_Pg){return err(_Pg);},_Ph=[0,_4S,_Pc,_1b,_Pf],_Pi=function(_Pj,_Pk,_Pl,_Pm,_Pn,_Po){var _Pp=new T(function(){return _b5(_Pj);});return A(_Pk,[new T(function(){return A(_Pm,[_Po]);}),function(_Pq){var _Pr=E(_Pq),_Ps=E(_Pr[1]);return A(_Pk,[new T(function(){return A(_Pn,[_Pr[2]]);}),function(_Pt){var _Pu=E(_Pt),_Pv=E(_Pu[1]);return A(_Pl,[[0,[0,new T(function(){return A(_Pp,[_Ps[1],_Pv[1]]);}),new T(function(){var _Pw=E(_Ps[2]);return _Pw[0]==0?E(_Pv[2]):E(_Pw);})],_Pu[2]]]);}]);}]);},_Px=function(_Py,_Pz,_PA,_PB,_PC,_PD){var _PE=new T(function(){return _Ej(_PA);});return A(_Py,[new T(function(){return A(_PB,[_PD]);}),function(_PF){var _PG=E(_PF),_PH=E(_PG[1]);return A(_Pz,[[0,[0,new T(function(){return A(_PE,[_PH[1],_PC]);}),_PH[2]],_PG[2]]]);}]);},_PI=function(_PJ){return E(E(_PJ)[12]);},_PK=function(_PL,_PM,_PN,_PO,_PP,_PQ,_PR){var _PS=new T(function(){return A(_PI,[_PL,new T(function(){var _PT=A(_PN,[_PP]),_PU=E(_IA),_PV=hs_eqWord64(_PT[1],_PU[1]);if(!E(_PV)){return A(_bb,[_PO,_PP]);}else{var _PW=hs_eqWord64(_PT[2],_PU[2]);return E(_PW)==0?A(_bb,[_PO,_PP]):E(_PP);}}),_PQ,_PR]);}),_PX=new T(function(){return _43(_PM);});return function(_PY){return A(_PX,[[0,[0,_PS,[1,_PP]],_PY]]);};},_PZ=[0,_7f,_Ev],_Q0=[1,_PZ,_g],_Q1=[0,_7f,_Ev],_Q2=[1,_Q1,_g],_Q3=function(_Q4,_Q5,_Q6,_Q7){var _Q8=new T(function(){return _HZ(_Q7,_Q6,_94,_qo);}),_Q9=new T(function(){return A(_43,[_Q4,_0]);}),_Qa=new T(function(){return A(_43,[_Q4,_gn]);}),_Qb=new T(function(){return _8u(_Q7);}),_Qc=new T(function(){return _8w(_Q6);}),_Qd=new T(function(){return _8N(_Q7);}),_Qe=new T(function(){return _3D(_Q4);});return function(_Qf,_Qg,_Qh){return A(_Qe,[new T(function(){var _Qi=new T(function(){return !E(_Qf)?E(_Q2):[0];}),_Qj=new T(function(){return _PK(_Q7,_Qc,_94,_sA,_Qh,new T(function(){return A(_Qd,[_Qh]);}),_0);}),_Qk=new T(function(){return !E(_Qf)?[0]:E(_Q0);}),_Ql=new T(function(){return _PK(_Q7,_Qc,_94,_sA,_Qg,new T(function(){return A(_Qd,[_Qg]);}),_0);});return A(_Q8,[function(_Qm){var _Qn=E(_Qc);return _Pi(_Qb,_Qn[1],_Qn[3],function(_Qo){var _Qp=E(_Qc);return _Px(_Qp[1],_Qp[3],_Q7,_Ql,_Qk,_Qo);},function(_Qq){var _Qr=E(_Qc);return _Px(_Qr[1],_Qr[3],_Q7,_Qj,_Qi,_Qq);},_Qm);}]);}),function(_Qs){return !_tj(_Qs,_Qg)?E(_Q9):E(_Qa);}]);};},_Qt=new T(function(){return _Q3(_Ph,_wL,_8t,_8s);}),_Qu=unCStr("yes"),_Qv=unCStr("no"),_Qw=new T(function(){return A(_Qt,[_gn,_Qu,_Qv]);}),_Qx=unCStr("ok"),_Qy=[1,_Qx],_Qz=new T(function(){return A(_zn,[_Qy]);}),_QA=new T(function(){return _tU(_Qz,_zl);}),_QB=function(_QC,_){var _QD=A(_Qw,[_QC,_]),_QE=E(_QD),_QF=E(_QE[1]),_QG=A(_QA,[_QE[2],_]),_QH=E(_QG);return [0,[0,function(_QI,_){var _QJ=A(_P6,[_QI,_]),_QK=A(_QF[1],[_QI,_]),_QL=A(E(_QH[1])[1],[_QI,_]),_QM=_G(_QI,_);return _QI;},new T(function(){var _QN=E(_QF[2]);return _QN[0]==0?[0]:[1,[0,_QN[1]]];})],_QH[2]];},_QO=unCStr("do you study in "),_QP=new T(function(){return _we(_z,_QO);}),_QQ=unCStr("University"),_QR=function(_Ld){return _OL(_QQ,_Ld);},_QS=unCStr("High School"),_QT=function(_Ld){return _OL(_QS,_Ld);},_QU=[1,_QT,_g],_QV=[1,_QR,_QU],_QW=new T(function(){return A(_G9,[_QV]);}),_QX=function(_QY,_){var _QZ=A(_QW,[_QY,_]),_R0=E(_QZ),_R1=E(_R0[1]);return [0,[0,function(_R2,_){var _R3=A(_QP,[_R2,_]),_R4=A(_R1[1],[_R2,_]);return _R2;},new T(function(){var _R5=E(_R1[2]);return _R5[0]==0?[0]:[1,[1,_R5[1]]];})],_R0[2]];},_R6=new T(function(){return _cN("main.hs:(293,11)-(300,64)|case");}),_R7=unCStr(" that you enjoy your work"),_R8=unCStr("False"),_R9=new T(function(){return _2l(_R8,_R7);}),_Ra=unCStr("True"),_Rb=new T(function(){return _2l(_Ra,_R7);}),_Rc=[0,32],_Rd=function(_Re,_Rf){var _Rg=new T(function(){return _w1(_z,new T(function(){return unAppCStr("You are ",new T(function(){return _2l(_Re,[1,_Rc,_Rf]);}));}));});return function(_ah,_A5){return _4S(_OW,function(_Rh){var _Ri=new T(function(){return !_tj(_Rh,_OP)?!_tj(_Rh,_Oi)?E(_R6):E(_QB):E(_QX);});return function(_ah,_A5){return _4S(_Ri,function(_Rj){return function(_Rk,_){var _Rl=A(new T(function(){var _Rm=E(_Rj);if(!_Rm[0]){var _Rn=new T(function(){return _w1(_z,new T(function(){return unAppCStr("You work and it is ",new T(function(){return !E(_Rm[1])?E(_R9):E(_Rb);}));}));});return function(_Ro,_){return [0,[0,function(_Rp,_){var _Rq=A(_Rn,[_Rp,_]);return _Rp;},_9],_Ro];};}else{var _Rr=new T(function(){return _w1(_z,new T(function(){return unAppCStr("You study at the ",_Rm[1]);}));});return function(_Rs,_){return [0,[0,function(_Rt,_){var _Ru=A(_Rr,[_Rt,_]);return _Rt;},_9],_Rs];};}}),[_Rk,_]),_Rv=E(_Rl),_Rw=E(_Rv[1]);return [0,[0,function(_Rx,_){var _Ry=A(_Rg,[_Rx,_]),_Rz=A(_Rw[1],[_Rx,_]);return _Rx;},_Rw[2]],_Rv[2]];};},_ah,_A5);};},_ah,_A5);};},_RA=function(_RB){var _RC=E(_RB);return _Rd(_RC[1],_RC[2]);},_RD=unCStr("Who are you? "),_RE=new T(function(){return _w1(_z,_RD);}),_RF=unCStr("name"),_RG=unCStr("placeholder"),_RH=[0,_RG,_RF],_RI=[1,_RH,_g],_RJ=unCStr("surname"),_RK=[0,_RG,_RJ],_RL=[1,_RK,_g],_RM=[1,_Qx],_RN=new T(function(){return A(_zn,[_RM]);}),_RO=new T(function(){return _tU(_RN,_zl);}),_RP=new T(function(){return A(_NX,[_9,_sC,_9]);}),_RQ=new T(function(){return A(_NX,[_9,_sC,_9]);}),_RR=function(_RS,_){var _RT=A(_RQ,[_RS,_]),_RU=E(_RT),_RV=E(_RU[1]),_RW=A(_RP,[_RU[2],_]),_RX=E(_RW),_RY=E(_RX[1]),_RZ=A(_RO,[_RX[2],_]),_S0=E(_RZ),_S1=new T(function(){return _1v(_RY[1],_RL);}),_S2=new T(function(){return _1v(_RV[1],_RI);});return [0,[0,function(_S3,_){var _S4=A(_RE,[_S3,_]),_S5=A(_S2,[_S3,_]),_S6=_G(_S3,_),_S7=A(_S1,[_S3,_]),_S8=_G(_S3,_),_S9=A(E(_S0[1])[1],[_S3,_]),_Sa=_G(_S3,_);return _S3;},new T(function(){var _Sb=E(_RV[2]);if(!_Sb[0]){return [0];}else{var _Sc=E(_RY[2]);return _Sc[0]==0?[0]:[1,[0,_Sb[1],_Sc[1]]];}})],_S0[2]];},_Sd=unCStr("http://mflowdemo.herokuapp.com/noscript/monadicwidgets/combination"),_Se=unCStr("This formulary is the same than the one "),_Sf=[0,97],_Sg=[1,_Sf,_g],_Sh=function(_Si,_Sj){var _Sk=new T(function(){return A(_Si,[_Sj]);});return function(_Sl,_){var _Sm=jsCreateElem(toJSStr(_Sg)),_Sn=jsAppendChild(_Sm,E(_Sl)[1]),_So=[0,_Sm],_Sp=A(_Sk,[_So,_]);return _So;};},_Sq=unCStr("run in the server by MFlow"),_Sr=new T(function(){return _Sh(_z,_Sq);}),_Ss=unCStr("href"),_St=function(_Su,_){var _Sv=_z(_Se,_Su,_),_Sw=A(_Sr,[_Su,_]),_Sx=A(_1g,[_1m,_Sw,_Ss,_Sd,_]);return _Su;},_Sy=new T(function(){return _w1(_11,_St);}),_Sz=unCStr("Fields of a form appear in sequence. Some of the fields trigger events instantly. Some others use a button to trigger them. It also contains option buttons, radio buttons etc"),_SA=new T(function(){return _w1(_z,_Sz);}),_SB=function(_SC,_){var _SD=_4S(_RR,_RA,_SC,_),_SE=E(_SD),_SF=E(_SE[1]);return [0,[0,function(_SG,_){var _SH=A(_SA,[_SG,_]),_SI=A(_Sy,[_SG,_]),_SJ=A(_SF[1],[_SG,_]);return _SG;},_SF[2]],_SE[2]];},_SK=unCStr("this example show a image gallery. It advances each 20 seconds and by pressing the button"),_SL=new T(function(){return _w1(_z,_SK);}),_SM=[1,_wy],_SN=unCStr("GalleryIndex"),_SO=[0,I_fromBits([203033753,3200738202]),I_fromBits([3394053259,1065442867]),_Ae,_Af,_SN],_SP=[0,I_fromBits([203033753,3200738202]),I_fromBits([3394053259,1065442867]),_SO,_g],_SQ=function(_SR){return E(_SP);},_SS=new T(function(){return _CJ(_1I,_4a,_1G,_SQ);}),_ST=function(_SU,_){var _SV=A(_SS,[_SU,_]);return [0,[0,_zh,new T(function(){var _SW=E(E(_SV)[1]);return _SW[0]==0?E(_SM):E(_SW);})],new T(function(){return E(E(_SV)[2]);})];},_SX=unCStr("100%"),_SY=[0,62],_SZ=[1,_SY,_g],_T0=[1,_SZ],_T1=new T(function(){return A(_zn,[_T0]);}),_T2=new T(function(){return _tU(_T1,_zl);}),_T3=function(_T4){return E(_T2);},_T5=unCStr("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRAgKkpDyzk8kdIqk5ECsZ14XgbpBzyWFvrCrHombkSBAUn6jFo"),_T6=[1,_T5,_g],_T7=unCStr("https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSfP70npv4FOrkBjScP0tVu2t3veSNoFQ6MMxX6LDO8kldNeu-DxQ"),_T8=[1,_T7,_T6],_T9=unCStr("https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcS53axpzkDyzEUAdaIP3YsaHuR-_YqN9qFK3W4bp_D2OBZfW5BU_Q"),_Ta=[1,_T9,_T8],_Tb=unCStr("https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ_ywj-zxDq3h_B4l48XHsjTywrdbK5egxvhxkYJ1HOkDFXd_-H"),_Tc=[1,_Tb,_Ta],_Td=unCStr("https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQmmC4kV3NPFIpGL_x4H_iHG_p-c93DGjWfkxVtjxEFVng7A8o-nw"),_Te=[1,_Td,_Tc],_Tf=unCStr("http://almaer.com/blog/uploads/interview-haskell.png"),_Tg=[1,_Tf,_Te],_Th=unCStr("height"),_Ti=unCStr("img"),_Tj=function(_Tk,_){var _Tl=jsCreateElem(toJSStr(E(_Ti))),_Tm=jsAppendChild(_Tl,E(_Tk)[1]);return [0,_Tl];},_Tn=function(_To,_Tp){while(1){var _Tq=E(_To);if(!_Tq[0]){return E(_Tp);}else{_To=_Tq[2];var _Tr=_Tp+1|0;_Tp=_Tr;continue;}}},_Ts=new T(function(){return [0,_Tn(_Tg,0)-1|0];}),_Tt=[0,_Z,_wn],_Tu=unCStr("src"),_Tv=unCStr("width"),_Tw=function(_Tx){return function(_ah,_A5){return _4S(function(_Cm,_){return _4S(_Cd,function(_Ty){return function(_Tz,_){return [0,_Tt,new T(function(){var _TA=E(_Ty);return [0,_TA[1],_TA[2],_TA[3],_TA[4],_TA[5],new T(function(){return _C0(I_fromBits([203033753,3200738202]),I_fromBits([3394053259,1065442867]),_SO,_g,new T(function(){var _TB=E(_Tx)[1];return _TB!=E(_Ts)[1]?[0,_TB+1|0]:E(_wy);}),_TA[6]);})];})];};},_Cm,_);},function(_TC,_Cm,_){return (function(_Cm,_){return _4S(function(_TD,_){return [0,[0,function(_TE,_){var _TF=_Tj(_TE,_),_TG=A(_1g,[_1m,_TF,_Tu,new T(function(){var _TH=E(_Tx)[1];return _TH>=0?_qu(_Tg,_TH):E(_qr);}),_]),_TI=A(_1g,[_1m,_TF,_Tv,_SX,_]),_TJ=A(_1g,[_1m,_TF,_Th,_SX,_]),_TK=_G(_TE,_);return _TE;},_Cf],_TD];},_T3,_Cm,_);})(_Cm,_);},_ah,_A5);};},_TL=function(_Cm,_){return _4S(_ST,_Tw,_Cm,_);},_TM=function(_TN,_TO,_){return _TP(_TO,_);},_TQ=function(_Cm,_){return _zG(_TL,_TM,_Cm,_);},_TR=[0,20000],_TS=new T(function(){return _4n(_1I,_4a,_1G,_1D);}),_TT=function(_TU,_TV,_TW,_){var _TX=A(_TS,[_TW,_]),_TY=new T(function(){return E(E(_TX)[1]);}),_TZ=new T(function(){return [0,_U0];}),_U0=function(_){var _U1=jsFind(toJSStr(E(_TY))),_U2=E(_U1);if(!_U2[0]){return _1f;}else{var _U3=E(_U2[1]),_U4=E(_U3),_U5=jsClearChildren(_U3[1]),_U6=E(_k)[1],_U7=takeMVar(_U6),_U8=A(_TV,[_U7,_]),_U9=E(_U8),_Ua=E(_U9[1]),_Ub=_Ua[1],_Uc=_Ua[2],_=putMVar(_U6,new T(function(){var _Ud=E(_U9[2]);return [0,_Ud[1],_Ud[2],_Ud[3],_Ud[4],_0,_Ud[6]];}));if(!E(E(_U7)[5])){var _Ue=A(_Ub,[_U4,_]),_Uf=E(_Uc);if(!_Uf[0]){var _Ug=jsSetTimeout(E(_TU)[1],E(_TZ)[1]);return _1f;}else{var _Uh=E(_Uf[1]);return _1f;}}else{var _Ui=A(_7,[E(_U4[1]),_]),_Uj=A(_Ub,[[0,_Ui],_]),_Uk=E(_Uc);if(!_Uk[0]){var _Ul=jsSetTimeout(E(_TU)[1],E(_TZ)[1]);return _1f;}else{var _Um=E(_Uk[1]);return _1f;}}}},_Un=jsSetTimeout(E(_TU)[1],E(_TZ)[1]);return _zt(_TY,_TV,new T(function(){return E(E(_TX)[2]);}),_);},_TP=function(_Uo,_){var _Up=_TT(_TR,_TQ,_Uo,_),_Uq=E(_Up),_Ur=E(_Uq[1]);return [0,[0,function(_Us,_){var _Ut=A(_SL,[_Us,_]),_Uu=A(_Ur[1],[_Us,_]);return _Us;},_Ur[2]],_Uq[2]];},_Uv=function(_Uw){var _Ux=new T(function(){return _we(_z,new T(function(){return unAppCStr(" returns ",_Uw);}));});return function(_Uy,_){return [0,[0,_Ux,_Cf],_Uy];};},_Uz=unCStr("This link say Hey!"),_UA=function(_Cm,_){return _z(_Uz,_Cm,_);},_UB=unCStr("Hey!"),_UC=function(_){var _=0,_UD=newMVar(),_=putMVar(_UD,_9);return [0,_UD];},_UE=new T(function(){return _2(_UC);}),_UF=new T(function(){return _4n(_1I,_4a,_1G,_1D);}),_UG=new T(function(){return A(_94,[_6u]);}),_UH=function(_UI,_UJ,_){var _=putMVar(E(_UI)[1],_UJ);return _1f;},_UK=function(_UL,_UM,_){return _t1(function(_){return _UH(_UE,_UL,_);},_UM,_);},_UN=function(_){var _UO=E(_UE)[1],_UP=takeMVar(_UO),_=putMVar(_UO,_UP);return _UP;},_UQ=function(_UR,_US,_UT,_UU){var _UV=new T(function(){return _Sh(_11,_UU);}),_UW=new T(function(){return unAppCStr("#/",new T(function(){var _UX=A(_US,[_UT]),_UY=E(_UG),_UZ=hs_eqWord64(_UX[1],_UY[1]);if(!E(_UZ)){return A(_bb,[_UR,_UT]);}else{var _V0=hs_eqWord64(_UX[2],_UY[2]);return E(_V0)==0?A(_bb,[_UR,_UT]):E(_UT);}}));});return function(_V1,_){var _V2=A(_UF,[_V1,_]),_V3=0,_V4=function(_,_V5,_V6){var _V7=new T(function(){return E(E(_V2)[1]);}),_V8=function(_V9,_){var _Va=A(_UV,[_V9,_]),_Vb=A(_1g,[_1m,_Va,_Ss,_UW,_]),_Vc=E(_Va),_Vd=jsSetCB(_Vc[1],E(_tA)[1],E([0,function(_Ve,_Vf,_){return (function(_){var _Vg=0;if(!E(_Vg)){return (function(_){var _Vh=takeMVar(E(_UE)[1]),_Vi=jsCatch(function(_){return (function(_){return [1,_V7];})();},function(_1C,_){return _UK(_Vh,_1C,_);});return _UH(_UE,_Vi,_);})();}else{var _Vj=takeMVar(E(_UE)[1]),_Vk=jsCatch(function(_){return [1,_V7];},function(_1C,_){return _UK(_Vj,_1C,_);});return _UH(_UE,_Vk,_);}})(_);}])[1]);return _Vc;},_Vl=E(_V5);return _Vl[0]==0?[0,[0,_V8,_9],_V6]:!_tj(_Vl[1],_V7)?[0,[0,_V8,_9],_V6]:[0,[0,_V8,[1,_UT]],_V6];};if(!E(_V3)){var _Vm=_UN();return _V4(_,_Vm,new T(function(){return E(E(_V2)[2]);}));}else{var _Vn=E(_UE)[1],_Vo=takeMVar(_Vn),_=putMVar(_Vn,_Vo);return _V4(_,_Vo,new T(function(){return E(E(_V2)[2]);}));}};},_Vp=new T(function(){return _UQ(_Fd,_Fc,_UB,_UA);}),_Vq=new T(function(){return _tU(_Vp,_zl);}),_Vr=function(_Vs,_){var _Vt=A(_Vq,[_Vs,_]),_Vu=E(_Vt),_Vv=E(_Vu[1]);return [0,[0,function(_Vw,_){var _Vx=_G(_Vw,_),_Vy=A(_Vv[1],[_Vw,_]);return _Vw;},_Vv[2]],_Vu[2]];},_Vz=function(_){var _VA=E(_t0)[1],_VB=takeMVar(_VA),_=putMVar(_VA,_VB);return _VB;},_VC=function(_VD,_){var _VE=0;if(!E(_VE)){var _VF=_Vz();return [0,[0,_Z,[1,_VF]],_VD];}else{var _VG=E(_t0)[1],_VH=takeMVar(_VG),_=putMVar(_VG,_VH);return [0,[0,_Z,[1,_VH]],_VD];}},_VI=function(_VJ,_VK,_VL){return A(_VJ,[[1,_38,new T(function(){return A(_VK,[_VL]);})]]);},_VM=unCStr("Key "),_VN=unCStr("Mouse "),_VO=unCStr("Click "),_VP=unCStr("NoData"),_VQ=function(_VR){return _2l(_VP,_VR);},_VS=unCStr(": empty list"),_VT=unCStr("Prelude."),_VU=function(_VV){return err(_2l(_VT,new T(function(){return _2l(_VV,_VS);})));},_VW=unCStr("foldr1"),_VX=new T(function(){return _VU(_VW);}),_VY=function(_VZ,_W0){var _W1=E(_W0);if(!_W1[0]){return E(_VX);}else{var _W2=_W1[1],_W3=E(_W1[2]);return _W3[0]==0?E(_W2):A(_VZ,[_W2,new T(function(){return _VY(_VZ,_W3);})]);}},_W4=[0,32],_W5=function(_W6,_W7){var _W8=E(_W7);switch(_W8[0]){case 0:return E(_VQ);case 1:var _W9=function(_Wa){return _4i(11,E(_W8[1])[1],[1,_W4,new T(function(){var _Wb=E(_W8[2]);return [1,_4h,new T(function(){return A(_VY,[_VI,[1,function(_Wc){return _4i(0,E(_Wb[1])[1],_Wc);},[1,function(_Wd){return _4i(0,E(_Wb[2])[1],_Wd);},_g]],[1,_4g,_Wa]]);})];})]);};return E(_W6)[1]<11?function(_We){return _2l(_VO,new T(function(){return _W9(_We);}));}:function(_Wf){return [1,_4h,new T(function(){return _2l(_VO,new T(function(){return _W9([1,_4g,_Wf]);}));})];};case 2:var _Wg=function(_Wh){return _2l(_VN,new T(function(){var _Wi=E(_W8[1]);return [1,_4h,new T(function(){return A(_VY,[_VI,[1,function(_Wj){return _4i(0,E(_Wi[1])[1],_Wj);},[1,function(_Wk){return _4i(0,E(_Wi[2])[1],_Wk);},_g]],[1,_4g,_Wh]]);})];}));};return E(_W6)[1]<11?E(_Wg):function(_Wl){return [1,_4h,new T(function(){return _Wg([1,_4g,_Wl]);})];};default:var _Wm=_W8[1];return E(_W6)[1]<11?function(_Wn){return _2l(_VM,new T(function(){return _4i(11,E(_Wm)[1],_Wn);}));}:function(_Wo){return [1,_4h,new T(function(){return _2l(_VM,new T(function(){return _4i(11,E(_Wm)[1],[1,_4g,_Wo]);}));})];};}},_Wp=function(_Wq){var _Wr=new T(function(){return _w1(_z,new T(function(){var _Ws=E(_Wq);return _2l(_Ws[1],[1,_Rc,new T(function(){return A(_W5,[_98,_Ws[2],_g]);})]);}));});return function(_Wt,_){return [0,[0,_Wr,_Cf],_Wt];};},_Wu=function(_Cm,_){return _4S(_VC,_Wp,_Cm,_);},_Wv=function(_Ww){return E(_Wu);},_Wx=[14,coercionToken],_Wy=[12,coercionToken],_Wz=[9,coercionToken],_WA=[11,coercionToken],_WB=[5,coercionToken],_WC=[10,coercionToken],_WD=[6,coercionToken],_WE=[7,coercionToken],_WF=unCStr("height:100px;background-color:lightgreen;position:relative"),_WG=unCStr("h1"),_WH=function(_WI,_WJ){var _WK=new T(function(){return A(_WI,[_WJ]);});return function(_WL,_){var _WM=jsCreateElem(toJSStr(E(_WG))),_WN=jsAppendChild(_WM,E(_WL)[1]),_WO=[0,_WM],_WP=A(_WK,[_WO,_]);return _WO;};},_WQ=unCStr("Mouse events here"),_WR=new T(function(){return _WH(_z,_WQ);}),_WS=new T(function(){return _N(_11,_WR);}),_WT=function(_WU,_){var _WV=A(_WS,[_WU,_]),_WW=A(_1g,[_1m,_WV,_DH,_WF,_]);return _WV;},_WX=[0,_WT,_Cf],_WY=function(_WZ,_){return [0,_WX,_WZ];},_X0=new T(function(){return _tU(_WY,_WE);}),_X1=new T(function(){return _tU(_X0,_WD);}),_X2=new T(function(){return _tU(_X1,_WC);}),_X3=new T(function(){return _tU(_X2,_WB);}),_X4=new T(function(){return _tU(_X3,_WA);}),_X5=new T(function(){return _tU(_X4,_zl);}),_X6=new T(function(){return _tU(_X5,_Wz);}),_X7=new T(function(){return _tU(_X6,_Wy);}),_X8=new T(function(){return _tU(_X7,_Wx);}),_X9=new T(function(){return _tU(_X8,_xC);}),_Xa=unCStr("http://todomvc.com"),_Xb=unCStr("Work in progress for a todo application to be added to "),_Xc=unCStr("todomvc.com"),_Xd=new T(function(){return _Sh(_z,_Xc);}),_Xe=function(_Xf,_){var _Xg=_z(_Xb,_Xf,_),_Xh=A(_Xd,[_Xf,_]),_Xi=A(_1g,[_1m,_Xh,_Ss,_Xa,_]);return _Xf;},_Xj=new T(function(){return _w1(_11,_Xe);}),_Xk=unCStr("Tasks"),_Xl=[0,I_fromBits([3561938990,657451105]),I_fromBits([3021302870,108592267]),_Ae,_Af,_Xk],_Xm=2,_Xn=function(_Xo,_Xp,_Xq,_Xr,_){var _Xs=A(_Xq,[_Xr,_]),_Xt=E(_Xs),_Xu=E(_Xt[1]),_Xv=_Xu[1];return [0,[0,function(_Xw,_){var _Xx=jsFind(toJSStr(E(_Xo))),_Xy=E(_Xx);if(!_Xy[0]){return _Xw;}else{var _Xz=_Xy[1];switch(E(_Xp)){case 0:var _XA=A(_Xv,[_Xz,_]);return _Xw;case 1:var _XB=E(_Xz),_XC=_XB[1],_XD=jsGetChildren(_XC),_XE=E(_XD);if(!_XE[0]){var _XF=A(_Xv,[_XB,_]);return _Xw;}else{var _XG=jsCreateElem(toJSStr(E(_4A))),_XH=jsAddChildBefore(_XG,_XC,E(_XE[1])[1]),_XI=A(_Xv,[[0,_XG],_]);return _Xw;}break;default:var _XJ=E(_Xz),_XK=jsClearChildren(_XJ[1]),_XL=A(_Xv,[_XJ,_]);return _Xw;}}},_Xu[2]],_Xt[2]];},_XM=[0,_Z,_wn],_XN=function(_XO,_){return [0,_XM,_XO];},_XP=unCStr("Pattern match failure in do expression at main.hs:349:7-25"),_XQ=new T(function(){return _Pf(_XP);}),_XR=function(_XS,_XT,_XU,_XV){return A(_XS,[new T(function(){return function(_){var _XW=jsSet(E(_XT)[1],toJSStr(E(_XU)),toJSStr(E(_XV)));return _1f;};})]);},_XX=unCStr("text"),_XY=unCStr("value"),_XZ=new T(function(){return _6v(_8X,_92);}),_Y0=new T(function(){return A(_XZ,[_6u]);}),_Y1=new T(function(){return A(_XZ,[_6u]);}),_Y2=unCStr("Prelude.read: ambiguous parse"),_Y3=unCStr("Prelude.read: no parse"),_Y4=function(_Y5){return [1,function(_Y6){return A(_mI,[_Y6,function(_Y7){return E([3,_Y5,_e0]);}]);}];},_Y8=function(_Y9){while(1){var _Ya=(function(_Yb){var _Yc=E(_Yb);if(!_Yc[0]){return [0];}else{var _Yd=_Yc[2],_Ye=E(_Yc[1]);if(!E(_Ye[2])[0]){return [1,_Ye[1],new T(function(){return _Y8(_Yd);})];}else{_Y9=_Yd;return null;}}})(_Y9);if(_Ya!=null){return _Ya;}}},_Yf=function(_Yg,_Yh){var _Yi=_Y8(_cQ(A(E(_Yg)[3],[_oZ,_Y4]),_Yh));return _Yi[0]==0?err(_Y3):E(_Yi[2])[0]==0?E(_Yi[1]):err(_Y2);},_Yj=function(_Yk,_Yl,_Ym,_Yn){var _Yo=new T(function(){return _bb(_Yl);}),_Yp=new T(function(){return _bd(_8s,_8t,_Ym,_Yl,_Yk);});return [0,function(_Yq){return A(_Yp,[[1,_Yn],_XX,_Yq]);},function(_Yr,_){var _Ys=E(_Yn),_Yt=jsFind(toJSStr(_Ys)),_Yu=E(_Yt);return _Yu[0]==0?_4I(_Ys):A(_XR,[_1m,_Yu[1],_XY,new T(function(){var _Yv=A(_Ym,[_Yr]),_Yw=E(_Y0),_Yx=hs_eqWord64(_Yv[1],_Yw[1]);if(!E(_Yx)){return A(_Yo,[_Yr]);}else{var _Yy=hs_eqWord64(_Yv[2],_Yw[2]);return E(_Yy)==0?A(_Yo,[_Yr]):E(_Yr);}}),_]);},function(_){var _Yz=E(_Yn),_YA=jsFind(toJSStr(_Yz)),_YB=E(_YA);if(!_YB[0]){return _4I(_Yz);}else{var _YC=_El(E(_YB[1])[1],_XY,_);return new T(function(){var _YD=A(_XZ,[_YC]),_YE=E(_Y1),_YF=hs_eqWord64(_YD[1],_YE[1]);if(!E(_YF)){return _Yf(_Yk,_YC);}else{var _YG=hs_eqWord64(_YD[2],_YE[2]);return E(_YG)==0?_Yf(_Yk,_YC):E(_YC);}});}}];},_YH=unCStr("todo"),_YI=new T(function(){var _YJ=_Yj(_HW,_Fd,_Fc,_YH);return [0,_YJ[1],_YJ[2],_YJ[3]];}),_YK=new T(function(){var _YL=A(E(_YI)[2],[_g]);return function(_YM,_){var _YN=A(_YL,[_]);return [0,[0,_Z,[1,_YN]],_YM];};}),_YO=[1,_g],_YP=[0,I_fromBits([3561938990,657451105]),I_fromBits([3021302870,108592267]),_Xl,_g],_YQ=function(_YR){return E(_YP);},_YS=new T(function(){return _CJ(_1I,_4a,_1G,_YQ);}),_YT=function(_YU,_){var _YV=A(_YS,[_YU,_]);return [0,[0,_zh,new T(function(){var _YW=E(E(_YV)[1]);return _YW[0]==0?E(_YO):E(_YW);})],new T(function(){return E(E(_YV)[2]);})];},_YX=[0,_Z,_wn],_YY=[0,_Z,_wn],_YZ=function(_Z0,_Z1,_){return [0,_YY,_Z1];},_Z2=[0,_Z,_wn],_Z3=function(_Z4,_){return [0,_Z2,_Z4];},_Z5=unCStr("list"),_Z6=unCStr("check"),_Z7=new T(function(){return A(_GS,[_0,_Z6]);}),_Z8=new T(function(){return _tU(_Z7,_zl);}),_Z9=function(_Za,_){var _Zb=A(_Z8,[_Za,_]),_Zc=E(_Zb),_Zd=E(_Zc[1]);return [0,[0,_Zd[1],new T(function(){var _Ze=E(_Zd[2]);return _Ze[0]==0?[0]:[1,E(_Ze[1])[1]];})],_Zc[2]];},_Zf=unCStr("text-decoration:line-through;"),_Zg=unCStr("li"),_Zh=function(_Zi,_Zj){var _Zk=new T(function(){return A(_Zi,[_Zj]);});return function(_Zl,_){var _Zm=jsCreateElem(toJSStr(E(_Zg))),_Zn=jsAppendChild(_Zm,E(_Zl)[1]),_Zo=[0,_Zm],_Zp=A(_Zk,[_Zo,_]);return _Zo;};},_Zq=function(_Zr){var _Zs=E(_Zr);if(!_Zs[0]){return [0];}else{var _Zt=new T(function(){return _we(_z,_Zs[1]);});return [1,function(_Zu,_){var _Zv=_4S(_Z9,function(_Zw){var _Zx=E(_Zw);return _Zx[0]==0?function(_Zy,_){return [0,[0,_Zt,_Cf],_Zy];}:!_tj(_Zx[1],_Z6)?function(_Zz,_){return [0,[0,_Zt,_Cf],_Zz];}:E(_Zx[2])[0]==0?function(_ZA,_){return [0,[0,function(_ZB,_){var _ZC=A(_Zt,[_ZB,_]),_ZD=A(_1g,[_1m,_ZC,_DH,_Zf,_]);return _ZC;},_Cf],_ZA];}:function(_ZE,_){return [0,[0,_Zt,_Cf],_ZE];};},_Zu,_),_ZF=E(_Zv),_ZG=E(_ZF[1]);return [0,[0,new T(function(){return _Zh(_11,_ZG[1]);}),_ZG[2]],_ZF[2]];},new T(function(){return _Zq(_Zs[2]);})];}},_ZH=function(_ZI,_ZJ){while(1){var _ZK=(function(_ZL,_ZM){var _ZN=E(_ZM);if(!_ZN[0]){return E(_ZL);}else{_ZI=function(_ZO,_){var _ZP=A(_ZL,[_ZO,_]),_ZQ=E(_ZP),_ZR=E(_ZQ[1]),_ZS=A(_ZN[1],[_ZQ[2],_]),_ZT=E(_ZS),_ZU=E(_ZT[1]);return [0,[0,function(_ZV,_){var _ZW=A(_ZR[1],[_ZV,_]),_ZX=A(_ZU[1],[_ZV,_]);return _ZV;},new T(function(){var _ZY=E(_ZR[2]);return _ZY[0]==0?E(_ZU[2]):E(_ZY);})],_ZT[2]];};_ZJ=_ZN[2];return null;}})(_ZI,_ZJ);if(_ZK!=null){return _ZK;}}},_ZZ=function(_100,_101,_){return _4S(_VC,function(_102){var _103=E(E(_102)[2]);return _103[0]==3?E(E(_103[1])[1])==13?function(_Cm,_){return _4S(_YK,function(_104){return function(_Cm,_){return _4S(_YT,function(_105){var _106=new T(function(){return _ZH(_Z3,_Zq([1,_100,_105]));});return function(_ah,_A5){return _4S(function(_Cm,_){return _4S(_Cd,function(_107){return function(_108,_){return [0,_YX,new T(function(){var _109=E(_107);return [0,_109[1],_109[2],_109[3],_109[4],_109[5],new T(function(){return _C0(I_fromBits([3561938990,657451105]),I_fromBits([3021302870,108592267]),_Xl,_g,[1,_100,_105],_109[6]);})];})];};},_Cm,_);},function(_10a,_Cm,_){return (function(_Cm,_){return _4S(function(_Cm,_){return _Xn(_Z5,_Xm,_106,_Cm,_);},_YZ,_Cm,_);})(_Cm,_);},_ah,_A5);};},_Cm,_);};},_Cm,_);}:E(_XN):E(_XQ);},_101,_);},_10b=new T(function(){return A(E(_YI)[1],[_9]);}),_10c=new T(function(){return _tU(_10b,_xC);}),_10d=unCStr("todos"),_10e=new T(function(){return _WH(_z,_10d);}),_10f=new T(function(){return _N(_11,_Z);}),_10g=function(_10h,_){var _10i=_4S(_10c,_ZZ,_10h,_),_10j=E(_10i),_10k=E(_10j[1]),_10l=new T(function(){return _z8(_11,function(_10m,_){var _10n=A(_10e,[_10m,_]),_10o=A(_10k[1],[_10m,_]);return _10m;});});return [0,[0,function(_10p,_){var _10q=A(_10l,[_10p,_]),_10r=A(_10f,[_10p,_]),_10s=A(_1g,[_1m,_10r,_K0,_Z5,_]);return _10p;},new T(function(){var _10t=E(_10k[2]);return _10t[0]==0?E(_Cf):E(_10t);})],_10j[2]];},_10u=function(_10v,_10w,_){return [0,[0,_Z,[1,[1,_10v]]],_10w];},_10x=unCStr("revEntry"),_10y=new T(function(){var _10z=_Yj(_HW,_Fd,_Fc,_10x);return [0,_10z[1],_10z[2],_10z[3]];}),_10A=new T(function(){return A(E(_10y)[1],[_9]);}),_10B=new T(function(){return _tU(_10A,_xC);}),_10C=function(_10D,_10E,_){return [0,[0,_Z,[1,[0,_10D]]],_10E];},_10F=unCStr("entry"),_10G=new T(function(){var _10H=_Yj(_HW,_Fd,_Fc,_10F);return [0,_10H[1],_10H[2],_10H[3]];}),_10I=new T(function(){return A(E(_10G)[1],[_9]);}),_10J=new T(function(){return _tU(_10I,_xC);}),_10K=function(_10L,_){var _10M=_4S(_10J,_10C,_10L,_),_10N=E(_10M),_10O=E(_10N[1]),_10P=_4S(_10B,_10u,_10N[2],_),_10Q=E(_10P),_10R=E(_10Q[1]);return [0,[0,new T(function(){return _z8(_11,function(_10S,_){var _10T=A(_10O[1],[_10S,_]),_10U=_G(_10S,_),_10V=A(_10R[1],[_10S,_]);return _10S;});}),new T(function(){var _10W=E(_10O[2]);return _10W[0]==0?E(_10R[2]):E(_10W);})],_10Q[2]];},_10X=unCStr("To search palindromes: one box present the other\'s reversed. It is also an example of cell usage"),_10Y=new T(function(){return _w1(_z,_10X);}),_10Z=function(_110){var _111=A(E(_10y)[2],[_110]);return function(_112,_){var _113=A(_111,[_]);return [0,[0,_Z,[1,_113]],_112];};},_114=function(_115,_116){while(1){var _117=E(_115);if(!_117[0]){return E(_116);}else{_115=_117[2];var _118=[1,_117[1],_116];_116=_118;continue;}}},_119=function(_11a){var _11b=new T(function(){return _114(_11a,_g);});return function(_11c,_){return [0,[0,_Z,[1,_11b]],_11c];};},_11d=new T(function(){var _11e=E(E(_10G)[3]);return function(_11f,_){var _11g=A(_11e,[_]);return [0,[0,_Z,[1,_11g]],_11f];};}),_11h=function(_Cm,_){return _4S(_11d,_119,_Cm,_);},_11i=function(_Cm,_){return _4S(_11h,_10Z,_Cm,_);},_11j=function(_11k){var _11l=A(E(_10G)[2],[_11k]);return function(_11m,_){var _11n=A(_11l,[_]);return [0,[0,_Z,[1,_11n]],_11m];};},_11o=new T(function(){var _11p=E(E(_10y)[3]);return function(_11q,_){var _11r=A(_11p,[_]);return [0,[0,_Z,[1,_11r]],_11q];};}),_11s=function(_11t){var _11u=new T(function(){return _114(_11t,_g);});return function(_11v,_){return [0,[0,_Z,[1,_11u]],_11v];};},_11w=function(_Cm,_){return _4S(_11o,_11s,_Cm,_);},_11x=function(_Cm,_){return _4S(_11w,_11j,_Cm,_);},_11y=function(_11z){return E(_11z)[0]==0?E(_11i):E(_11x);},_11A=function(_11B,_){var _11C=_4S(_10K,_11y,_11B,_),_11D=E(_11C),_11E=E(_11D[1]);return [0,[0,function(_11F,_){var _11G=A(_10Y,[_11F,_]),_11H=A(_11E[1],[_11F,_]);return _11F;},_11E[2]],_11D[2]];},_11I=unCStr("This widget sum recursively n numbers, but remember the previos entries when one entry is edited"),_11J=new T(function(){return _w1(_z,_11I);}),_11K=[0,_Z,_9],_11L=function(_11M,_){return [0,_11K,_11M];},_11N=function(_11O,_11P,_11Q){var _11R=E(_11O),_11S=_11R[1],_11T=_11R[2],_11U=_11R[3],_11V=_11R[4],_11W=E(_11Q);if(!_11W[0]){var _11X=_11W[2],_11Y=_11W[3],_11Z=_11W[4],_120=_11W[5];switch(_At(_11R,_11X)){case 0:return _AG(_11X,_11Y,_C0(_11S,_11T,_11U,_11V,_11P,_11Z),_120);case 1:return [0,_11W[1],E(_11R),_11P,E(_11Z),E(_120)];default:return _Bl(_11X,_11Y,_11Z,_C0(_11S,_11T,_11U,_11V,_11P,_120));}}else{return [0,1,E(_11R),_11P,E(_f),E(_f)];}},_121=function(_122,_123,_124){var _125=E(_124);if(!_125[0]){var _126=_125[3],_127=_125[4],_128=_125[5],_129=E(_125[2]),_12a=_129[1];return _122>=_12a?_122!=_12a?_Bl(_129,_126,_127,_121(_122,_123,_128)):[0,_125[1],E([0,_122]),_123,E(_127),E(_128)]:_AG(_129,_126,_121(_122,_123,_127),_128);}else{return [0,1,E([0,_122]),_123,E(_f),E(_f)];}},_12b=function(_12c,_12d,_12e){var _12f=E(_12c),_12g=_12f[1],_12h=E(_12e);if(!_12h[0]){var _12i=_12h[3],_12j=_12h[4],_12k=_12h[5],_12l=E(_12h[2]),_12m=_12l[1];return _12g>=_12m?_12g!=_12m?_Bl(_12l,_12i,_12j,_121(_12g,_12d,_12k)):[0,_12h[1],E(_12f),_12d,E(_12j),E(_12k)]:_AG(_12l,_12i,_121(_12g,_12d,_12j),_12k);}else{return [0,1,E(_12f),_12d,E(_f),E(_f)];}},_12n=function(_12o,_12p){while(1){var _12q=E(_12p);if(!_12q[0]){var _12r=E(_12q[2])[1];if(_12o>=_12r){if(_12o!=_12r){_12p=_12q[5];continue;}else{return [1,_12q[3]];}}else{_12p=_12q[4];continue;}}else{return [0];}}},_12s=unCStr("containers-0.5.5.1"),_12t=unCStr("Data.Map.Base"),_12u=unCStr("Map"),_12v=[0,I_fromBits([2800860092,98171937]),I_fromBits([2262449324,1391410843]),_12s,_12t,_12u],_12w=[0,I_fromBits([2800860092,98171937]),I_fromBits([2262449324,1391410843]),_12v,_g],_12x=function(_12y){return E(_12w);},_12z=function(_12A){var _12B=E(_12A);if(!_12B[0]){return [0];}else{var _12C=E(_12B[1]);return [1,[0,_12C[1],_12C[2]],new T(function(){return _12z(_12B[2]);})];}},_12D=function(_12E,_12F){return function(_12G){return E(new T(function(){var _12H=A(_12E,[_6u]),_12I=E(_12H[3]),_12J=_12I[1],_12K=_12I[2],_12L=_2l(_12H[4],[1,new T(function(){return A(_12F,[_6u]);}),_g]);if(!_12L[0]){return [0,_12J,_12K,_12I,_g];}else{var _12M=_5Z(new T(function(){return _5N(_6b(_6m,[1,[0,_12J,_12K],new T(function(){return _12z(_12L);})]));}));return [0,_12M[1],_12M[2],_12I,_12L];}}));};},_12N=new T(function(){return _12D(_12x,_yu);}),_12O=new T(function(){return _6v(_12N,_yu);}),_12P=new T(function(){return _CJ(_1I,_4a,_1G,_12O);}),_12Q=function(_12R,_){var _12S=A(_12P,[_12R,_]);return [0,[0,_Z,new T(function(){return E(E(_12S)[1]);})],new T(function(){return E(E(_12S)[2]);})];},_12T=new T(function(){return _6v(_12N,_yu);}),_12U=[1,_f],_12V=new T(function(){return _CJ(_1I,_4a,_1G,_12T);}),_12W=function(_12X,_){var _12Y=A(_12V,[_12X,_]);return [0,[0,_zh,new T(function(){var _12Z=E(E(_12Y)[1]);return _12Z[0]==0?E(_12U):E(_12Z);})],new T(function(){return E(E(_12Y)[2]);})];},_130=[0,_Z,_wn],_131=[1,_9],_132=function(_133,_134){var _135=new T(function(){return [0,E(_133)[1]+1|0];});return function(_ah,_A5){return _4S(function(_Cm,_){return _4S(function(_136,_){var _137=_4S(_12Q,function(_138){var _139=_12n(E(_133)[1],_138);return _139[0]==0?E(_11L):function(_13a,_){return [0,[0,_Z,_139],_13a];};},_136,_),_13b=E(_137),_13c=E(_13b[1]);return [0,[0,function(_13d,_){var _13e=A(_13c[1],[_13d,_]);return _13d;},new T(function(){var _13f=E(_13c[2]);return _13f[0]==0?E(_131):[1,_13f];})],_13b[2]];},function(_13g){var _13h=new T(function(){return _tU(new T(function(){return A(_yw,[_9,_sC,_13g]);}),_xC);});return function(_ah,_A5){return _4S(function(_13i,_){var _13j=A(_13h,[_13i,_]),_13k=E(_13j),_13l=_13k[2],_13m=E(_13k[1]),_13n=_13m[1],_13o=_13m[2],_13p=E(_13g);return _13p[0]==0?[0,[0,function(_13q,_){var _13r=A(_13n,[_13q,_]);return _13q;},_13o],_13l]:[0,[0,function(_13s,_){var _13t=A(_13n,[_13s,_]);return _13s;},new T(function(){var _13u=E(_13o);return _13u[0]==0?E(_13p):E(_13u);})],_13l];},function(_13v,_13w,_){return _4S(function(_Cm,_){return _4S(_12W,function(_13x){var _13y=new T(function(){return _12b(_133,_13v,_13x);}),_13z=new T(function(){return A(_12T,[_13y]);});return function(_ah,_A5){return _4S(_Cd,function(_13A){return function(_13B,_){return [0,_130,new T(function(){var _13C=E(_13A);return [0,_13C[1],_13C[2],_13C[3],_13C[4],_13C[5],new T(function(){return _11N(_13z,_13y,_13C[6]);})];})];};},_ah,_A5);};},_Cm,_);},function(_13D,_Cm,_){return (function(_13E,_){return [0,[0,_Z,[1,_13v]],_13E];})(_Cm,_);},_13w,_);},_ah,_A5);};},_Cm,_);},function(_13F){var _13G=new T(function(){return _132(_135,new T(function(){return _wR(_134,_13F);}));}),_13H=new T(function(){return _we(_z,new T(function(){return _4i(0,E(_134)[1]+E(_13F)[1]|0,_g);}));});return function(_ah,_A5){return _4S(function(_13I,_){return [0,[0,function(_13J,_){var _13K=A(_13H,[_13J,_]),_13L=_G(_13J,_);return _13J;},_wn],_13I];},function(_13M){return E(_13G);},_ah,_A5);};},_ah,_A5);};},_13N=new T(function(){return _132(_wy,_wy);}),_13O=unCStr("This widget sum recursively n numbers. When enters 0, present the result"),_13P=new T(function(){return _w1(_z,_13O);}),_13Q=new T(function(){return A(_yw,[_9,_sC,_9]);}),_13R=new T(function(){return _tU(_13Q,_xC);}),_13S=function(_13T){var _13U=new T(function(){return _we(_z,new T(function(){return _wa(_13T);}));});return function(_ah,_A5){return _4S(_13R,function(_13V){var _13W=E(E(_13V)[1]);if(!_13W){return function(_13X,_){return [0,[0,function(_13Y,_){var _13Z=_G(_13Y,_),_140=_z(_wo,_13Y,_),_141=A(_13U,[_13Y,_]);return _13Y;},_9],_13X];};}else{var _142=new T(function(){return _13S(new T(function(){return [0,E(_13T)[1]+_13W|0];}));}),_143=new T(function(){return _we(_z,new T(function(){return _4i(0,E(_13T)[1]+_13W|0,_g);}));});return function(_ah,_A5){return _4S(function(_144,_){return [0,[0,function(_145,_){var _146=A(_143,[_145,_]),_147=_G(_145,_);return _145;},_wn],_144];},function(_148){return E(_142);},_ah,_A5);};}},_ah,_A5);};},_149=new T(function(){return _13S(_wy);}),_14a=unCStr("This widget sum two numbers and append the result. Using applicative and monadic expressions"),_14b=new T(function(){return _w1(_z,_14a);}),_14c=function(_14d){return function(_14e,_){return [0,[0,new T(function(){var _14f=new T(function(){return _we(_z,new T(function(){return _wa(_14d);}));});return _w1(_11,function(_14g,_){var _14h=_z(_wo,_14g,_),_14i=A(_14f,[_14g,_]);return _14g;});}),_wn],_14e];};},_14j=new T(function(){return A(_yw,[_9,_sC,_9]);}),_14k=new T(function(){return _tU(_14j,_xC);}),_14l=unCStr("second number "),_14m=unCStr("first number"),_14n=new T(function(){return A(_yw,[_9,_sC,_9]);}),_14o=new T(function(){return _tU(_14n,_xC);}),_14p=function(_14q,_){var _14r=A(_14k,[_14q,_]),_14s=E(_14r),_14t=E(_14s[1]),_14u=A(_14o,[_14s[2],_]),_14v=E(_14u),_14w=E(_14v[1]);return [0,[0,function(_14x,_){var _14y=_z(_14m,_14x,_),_14z=_G(_14x,_),_14A=A(_14t[1],[_14x,_]),_14B=_G(_14x,_),_14C=_z(_14l,_14x,_),_14D=_G(_14x,_),_14E=A(_14w[1],[_14x,_]),_14F=_G(_14x,_);return _14x;},new T(function(){var _14G=E(_14t[2]);if(!_14G[0]){return [0];}else{var _14H=E(_14w[2]);return _14H[0]==0?[0]:[1,new T(function(){return _wR(_14G[1],_14H[1]);})];}})],_14v[2]];},_14I=function(_14J,_){var _14K=_4S(_14p,_14c,_14J,_),_14L=E(_14K),_14M=E(_14L[1]),_14N=new T(function(){return _w1(_11,_14M[1]);});return [0,[0,function(_14O,_){var _14P=A(_14b,[_14O,_]),_14Q=A(_14N,[_14O,_]);return _14O;},_14M[2]],_14L[2]];},_14R=unCStr("table"),_14S=function(_14T,_14U){var _14V=new T(function(){return A(_14T,[_14U]);});return function(_14W,_){var _14X=jsCreateElem(toJSStr(E(_14R))),_14Y=jsAppendChild(_14X,E(_14W)[1]),_14Z=[0,_14X],_150=A(_14V,[_14Z,_]);return _14Z;};},_151=unCStr("hplayground examples"),_152=new T(function(){return _WH(_z,_151);}),_153=unCStr("td"),_154=function(_155,_156){var _157=new T(function(){return A(_155,[_156]);});return function(_158,_){var _159=jsCreateElem(toJSStr(E(_153))),_15a=jsAppendChild(_159,E(_158)[1]),_15b=[0,_159],_15c=A(_157,[_15b,_]);return _15b;};},_15d=unCStr("tr"),_15e=function(_15f,_15g){var _15h=new T(function(){return A(_15f,[_15g]);});return function(_15i,_){var _15j=jsCreateElem(toJSStr(E(_15d))),_15k=jsAppendChild(_15j,E(_15i)[1]),_15l=[0,_15j],_15m=A(_15h,[_15l,_]);return _15l;};},_15n=unCStr("bottom of the page"),_15o=new T(function(){return _we(_z,_15n);}),_15p=unCStr("h3"),_15q=function(_15r,_15s){var _15t=new T(function(){return A(_15r,[_15s]);});return function(_15u,_){var _15v=jsCreateElem(toJSStr(E(_15p))),_15w=jsAppendChild(_15v,E(_15u)[1]),_15x=[0,_15v],_15y=A(_15t,[_15x,_]);return _15x;};},_15z=unCStr("https://github.com/agocorona/hplayground"),_15A=unCStr(" "),_15B=unCStr("https://github.com/agocorona/hplayground/blob/master/src/Main.hs"),_15C=unCStr("haskell-web.blogspot.com.es/2014/07/hplayground-translate-your-console.html"),_15D=unCStr("Git repository"),_15E=new T(function(){return _Sh(_z,_15D);}),_15F=unCStr("Examples code"),_15G=new T(function(){return _Sh(_z,_15F);}),_15H=unCStr("Article"),_15I=new T(function(){return _Sh(_z,_15H);}),_15J=function(_15K,_){var _15L=A(_15E,[_15K,_]),_15M=A(_1g,[_1m,_15L,_Ss,_15z,_]),_15N=_z(_15A,_15K,_),_15O=A(_15G,[_15K,_]),_15P=A(_1g,[_1m,_15O,_Ss,_15B,_]),_15Q=_z(_15A,_15K,_),_15R=A(_15I,[_15K,_]),_15S=A(_1g,[_1m,_15R,_Ss,_15C,_]);return _15K;},_15T=new T(function(){return _z8(_11,_15J);}),_15U=new T(function(){return _15q(_11,_15T);}),_15V=function(_15W,_){var _15X=_14I(_15W,_),_15Y=E(_15X),_15Z=E(_15Y[1]),_160=A(_z6,[_15Y[2],_]),_161=E(_160),_162=E(_161[1]),_163=A(_149,[_161[2],_]),_164=E(_163),_165=E(_164[1]),_166=A(_Dl,[_164[2],_]),_167=E(_166),_168=E(_167[1]),_169=_Jh(_167[2],_),_16a=E(_169),_16b=E(_16a[1]),_16c=_4S(_Vr,_Uv,_16a[2],_),_16d=E(_16c),_16e=E(_16d[1]),_16f=A(_13N,[_16d[2],_]),_16g=E(_16f),_16h=E(_16g[1]),_16i=A(_E2,[_16g[2],_]),_16j=E(_16i),_16k=E(_16j[1]),_16l=_SB(_16j[2],_),_16m=E(_16l),_16n=E(_16m[1]),_16o=_11A(_16m[2],_),_16p=E(_16o),_16q=E(_16p[1]),_16r=_10g(_16p[2],_),_16s=E(_16r),_16t=E(_16s[1]),_16u=_O9(_16s[2],_),_16v=E(_16u),_16w=E(_16v[1]),_16x=_TP(_16v[2],_),_16y=E(_16x),_16z=E(_16y[1]),_16A=_4S(_X9,_Wv,_16y[2],_),_16B=E(_16A),_16C=E(_16B[1]),_16D=new T(function(){return _14S(_11,function(_16E,_){var _16F=A(new T(function(){var _16G=new T(function(){return _154(_11,function(_16H,_){var _16I=A(_13P,[_16H,_]),_16J=A(_165[1],[_16H,_]);return _16H;});}),_16K=new T(function(){return _154(_11,_162[1]);}),_16L=new T(function(){return _154(_11,_15Z[1]);});return _15e(_11,function(_16M,_){var _16N=A(_16L,[_16M,_]),_16O=A(_1g,[_1m,_16N,_DH,_vV,_]),_16P=A(_16K,[_16M,_]),_16Q=A(_1g,[_1m,_16P,_DH,_vV,_]),_16R=A(_16G,[_16M,_]),_16S=A(_1g,[_1m,_16R,_DH,_vV,_]);return _16M;});}),[_16E,_]),_16T=A(_1g,[_1m,_16F,_DH,_vX,_]),_16U=A(new T(function(){var _16V=new T(function(){return _154(_11,_16k[1]);}),_16W=new T(function(){return _154(_11,function(_16X,_){var _16Y=A(_11J,[_16X,_]),_16Z=A(_16h[1],[_16X,_]);return _16X;});}),_170=new T(function(){return _154(_11,function(_171,_){var _172=A(_168[1],[_171,_]),_173=A(_16b[1],[_171,_]),_174=A(_16e[1],[_171,_]);return _171;});});return _15e(_11,function(_175,_){var _176=A(_170,[_175,_]),_177=A(_1g,[_1m,_176,_DH,_vV,_]),_178=A(_16W,[_175,_]),_179=A(_1g,[_1m,_178,_DH,_vV,_]),_17a=A(_16V,[_175,_]),_17b=A(_1g,[_1m,_17a,_DH,_vV,_]);return _175;});}),[_16E,_]),_17c=A(_1g,[_1m,_16U,_DH,_vX,_]),_17d=A(new T(function(){var _17e=new T(function(){return _154(_11,function(_17f,_){var _17g=A(_Xj,[_17f,_]),_17h=A(_16t[1],[_17f,_]);return _17f;});}),_17i=new T(function(){return _154(_11,_16q[1]);}),_17j=new T(function(){return _154(_11,new T(function(){return _z8(_11,_16n[1]);}));});return _15e(_11,function(_17k,_){var _17l=A(_17j,[_17k,_]),_17m=A(_1g,[_1m,_17l,_DH,_vV,_]),_17n=A(_17i,[_17k,_]),_17o=A(_1g,[_1m,_17n,_DH,_vV,_]),_17p=A(_17e,[_17k,_]),_17q=A(_1g,[_1m,_17p,_DH,_vV,_]);return _17k;});}),[_16E,_]),_17r=A(_1g,[_1m,_17d,_DH,_vX,_]),_17s=A(new T(function(){var _17t=new T(function(){return _154(_11,_16C[1]);}),_17u=new T(function(){return _154(_11,_16z[1]);}),_17v=new T(function(){return _154(_11,_16w[1]);});return _15e(_11,function(_17w,_){var _17x=A(_17v,[_17w,_]),_17y=A(_1g,[_1m,_17x,_DH,_vV,_]),_17z=A(_17u,[_17w,_]),_17A=A(_1g,[_1m,_17z,_DH,_vV,_]),_17B=A(_17t,[_17w,_]),_17C=A(_1g,[_1m,_17B,_DH,_vV,_]);return _17w;});}),[_16E,_]),_17D=A(_1g,[_1m,_17s,_DH,_vX,_]);return _16E;});});return [0,[0,function(_17E,_){var _17F=A(_152,[_17E,_]),_17G=A(_1g,[_1m,_17F,_DH,_DG,_]),_17H=A(_15U,[_17E,_]),_17I=A(_16D,[_17E,_]),_17J=A(_1g,[_1m,_17I,_DH,_vW,_]),_17K=A(_15o,[_17E,_]);return _17E;},new T(function(){var _17L=E(_15Z[2]);if(!_17L[0]){var _17M=E(_162[2]);if(!_17M[0]){var _17N=E(_165[2]);if(!_17N[0]){var _17O=E(_168[2]);if(!_17O[0]){var _17P=E(_16b[2]);if(!_17P[0]){var _17Q=E(_16e[2]);if(!_17Q[0]){var _17R=E(_16h[2]);if(!_17R[0]){var _17S=E(_16k[2]);if(!_17S[0]){var _17T=E(_16n[2]);if(!_17T[0]){var _17U=E(_16q[2]);if(!_17U[0]){var _17V=E(_16t[2]);if(!_17V[0]){var _17W=E(_16w[2]);if(!_17W[0]){var _17X=E(_16z[2]);return _17X[0]==0?E(_16C[2]):E(_17X);}else{return E(_17W);}}else{return E(_17V);}}else{return E(_17U);}}else{return E(_17T);}}else{return E(_17S);}}else{return E(_17R);}}else{return E(_17Q);}}else{return E(_17P);}}else{return E(_17O);}}else{return E(_17N);}}else{return E(_17M);}}else{return E(_17L);}})],_16B[2]];},_17Y=new T(function(){return [0,"(function(){return document.body;})"];}),_17Z=new T(function(){return _5(_17Y);}),_180=function(_){var _181=_vN(_),_182=A(_17Z,[_]);return _l(_15V,[0,_182],_);},_183=function(_){return _180(_);}; +var hasteMain = function() {A(_183, [0]);};window.onload = hasteMain;</script></head><body></body></html>