fy[+G      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFNone GType alias for H Creates a 200 (OK) I* with the given content-type and resposne  body J+Helper to make responses with content-type "text/html" Creates a 200 (OK) I with content-type "text/html" and the  given resposne body Creates a 200 (OK) I with content-type " application/json" and the  given resposne body .Given a URL returns a 301 (Moved Permanently) I redirecting to  that URL. &Given a URL returns a 303 (See Other) I redirecting to that URL. Returns a 400 (Bad Request) I. 'Returns a 401 (Authorization Required) I requiring basic $ authentication in the given realm. Returns a 403 (Forbidden) I. Returns a 404 (Not Found) I. Returns a 500 (Server Error) I. GJ   GJ None /The class of types that can be converted to an K @The class of types into which query parameters may be converted JThe Controller Monad is both a State-like monad which, when run, computes  either a I9 or a result. Within the Controller Monad, the remainder . of the computation can be short-circuited by  ing with a I. Extract the request -Modify the request for the given computation 'Extract the application-specific state Convert the controller into an K Run a  in the IO monad LDecline to handle the request pass >> c === c  c >> pass === c Provide a response respond r >>= f === respond r$Lift an application to a controller !Matches on the hostname from the M. The route only succeeds on  exact matches. Matches if the path is empty. !Note that this route checks that N @ is empty, so it works as expected in nested contexts that have  popped components from the N list. )Matches on the HTTP request method (e.g. O, P, Q) Matches if the request'0s Content-Type exactly matches the given string 3Routes the given URL pattern. Patterns can include 9 directories as well as variable patterns (prefixed with :) to be added  to R (see )  /posts/:id  /posts/:id/new  /:date/posts/ :category/new =Matches if the first directory in the path matches the given  ByteString 5Always matches if there is at least one directory in N but and  adds a parameter to R* where the key is the first parameter and 4 the value is the directory consumed from the path. *Looks up the parameter name in the request's query string and returns the   Parseable value or S. .For example, for a request with query string: "?foo=bar&baz=7",   queryParam "foo"  would return Just bar, but   queryParam "zap"  would return Nothing. !Like  ;, but throws an exception if the parameter is not present. "1Selects all values with the given parameter name #Like  1, but further processes the parameter value with read. 3 If that conversion fails, an exception is thrown. $Like #;, but throws an exception if the parameter is not present. %Like "2, but further processes the parameter values with read. 7 If any read-conversion fails, an exception is thrown. &?Parses a HTML form from the request body. It returns a list of Ts as  well as a list of U)s, which are pairs mapping the name of a file form  field to a V7 pointing to a temporary file with the contents of the  upload.   myController = do  (prms, files) < - parseForm  let mPicFile = lookup " profile_pic" files  case mPicFile of  Just (picFile) -> do - sourceFile (fileContent picFile) $$  sinkFile ("images/" ++ (fileName picFile))  respond $ redirectTo "/"  Nothing -> redirectBack '0Reads and returns the body of the HTTP request. (1Returns the value of the given request header or S if it is not  present in the HTTP request. )CRedirect back to the referer. If the referer header is not present  redirect to root (i.e., /). *CRedirect back to the referer. If the referer header is not present  fallback on the given I. : W XYZ[\]L Parameter name !"#Parameter name $Parameter name %Parameter name ^&'()*Fallback response _`abcdefghijklmnoopqrstuvwxyz{|}~  !"#$%&'()*!( !"#$%&)* '6 W  XYZ[\]L !"#$%^&'()*_`abcdefghijklmnNoneHelper method +0Matches the GET method on the given URL pattern ,1Matches the POST method on the given URL pattern -0Matches the PUT method on the given URL pattern .3Matches the DELETE method on the given URL pattern /4Matches the OPTIONS method on the given URL pattern +,-./+,-./+,-./+,-./None0An 0 authenticates a M" and, if successful, forwards the  M to the  Routeable. 1An 0? that uses HTTP basic authentication to authenticate a request  in a particular realm. 2 Wraps an 06 to take a simpler authentication function (that just 1 just takes a username and password, and returns  or  ). It also  adds an "X-User" header to the M with the authenticated user's ; name (the first argument to the authentication function). 3A RouteK that uses HTTP basic authentication to authenticate a request for a realm H with the given username ans password. The request is rewritten with an 'X-User' header G containing the authenticated username before being passed to the next Route. 0123Realm  Username  Password 012301320123None456789:;<=>?@ABCDEF456789:;<=>?@ABCDEF56789:;<=4>?@DAEFBC 456789:;<=>?@ABCDEFNoneopqrstuvwxyz{|}~RNMIK  !"#$%&'()*      !"#$%&'()*+,-./0123456789:;;<=>?@ABCDEFGHIJ4KLMNOPQROPSTOPUOPVWXYWXZWX[OP\]^_`ab`ac`adefghijklmnopqrstuvwxyz{]|}]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]OPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPUOPOPOPOPOPOPOPOPOPOPOP simple-0.6.0Web.Simple.ResponsesWeb.Simple.Controller Web.FrankWeb.Simple.AuthWeb.REST Web.SimpleokokHtmlokJsonmovedTo redirectTo badRequestrequireBasicAuth forbiddennotFound serverErrorControllerException ToApplicationtoApp Parseable Controllerrequest localRequestcontrollerStateputState controllerApp runControllerrunControllerIOrespondfromApp routeHostrouteTop routeMethod routeAccept routePattern routeNamerouteVar queryParam queryParam' queryParamsreadQueryParamreadQueryParam'readQueryParams parseFormbody requestHeader redirectBackredirectBackOrgetpostputdeleteoptions AuthRouterbasicAuthRouteauthRewriteReq basicAuthRESTControllerREST restIndexrestShow restCreate restUpdate restDeleterestEditrestNewrest routeRESTindexcreateeditnewshowupdate ContentTypebytestring-0.10.0.2Data.ByteString.Internal ByteString wai-1.4.1 Network.WaiResponsemkHtmlResponse ApplicationpassRequestpathInfohttp-types-0.8.2Network.HTTP.Types.MethodGETPOSTPUT queryStringbase Data.MaybeNothingwai-extra-1.3.4.6Network.Wai.ParseParamFileFileInfoparseControllerState liftResourceT hoistEitherasklocalreadParamValueguardguardMguardReqerr$fExceptionControllerException$fShowControllerException$fToApplicationResponse$fToApplication(->)$fParseableText $fParseable[]$fParseableByteString$fMonadPeelIOController$fMonadIOController$fMonadController$fApplicativeController$fFunctorControllerGHC.BaseassertControl.ExceptionallowInterruptControl.Exception.Base mapExceptionPatternMatchFail RecSelError RecConError RecUpdError NoMethodErrorNonTerminationNestedAtomically GHC.Conc.SyncthrowToGHC.IO.ExceptionBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAssertionFailed StackOverflow HeapOverflow ThreadKilled UserInterruptAsyncExceptionIndexOutOfBoundsUndefinedElementArrayExceptionGHC.IOuninterruptibleMaskuninterruptibleMask_maskmask_getMaskingStateUnmaskedMaskedInterruptibleMaskedUninterruptible MaskingState IOException GHC.Exceptionthrow SomeException fromException toException Exception ErrorCallOverflow UnderflowLossOfPrecision DivideByZeroDenormalRatioZeroDenominatorArithExceptionmonad-peel-0.1.1Control.Exception.Peel onExceptionfinallybracketOnErrorbracket_bracketunblockblockevaluatetryJusttry handleJusthandlecatches catchJustcatchioErrorthrowIOHandler frankMethodghc-prim GHC.TypesTrueFalseRESTControllerM defaultRESTlazyRequestBody responseLBSresponseSourceresponseStatusrequestBodyLengthvault requestBody remoteHostisSecurerequestHeaders serverPort serverNamerawQueryString rawPathInfo httpVersion requestMethod ResponseFileResponseBuilderResponseSourcefilePartByteCountfilePartOffsetFilePart Middleware ChunkedBody KnownLengthRequestBodyLength