!L[*      !"#$%&'()None =?@APX`*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   None =?@APX`  None =?@AEMPX`% webby[Holds web server configuration like API routes, handlers and an optional exception handlerwebbyVVarious kinds of errors thrown by this library - these can be caught by handler code.webbyZInternal type used to terminate handler processing by throwing and catching an exception.webby8Captures are simply extracted path elements in a HashMap webby3A route is a pair of a route pattern and a handler. webbyAA route pattern represents logic to match a request to a handler. webby;The main monad transformer stack used in the web-framework.'The type of a handler for a request is WebbyM appEnv (). The appEnv parameter is used by the web application to store an (read-only) environment. For e.g. it can be used to store a database connection pool.webbyrThe reader environment used by the web framework. It is parameterized by the application's environment data type.webbydA data type to represent parts of the response constructed in the handler when servicing a request. webbyDefault WebbyServerConfig$ typically used in conjunction with   and  webby(Sets API routes and their handlers of a webby Sets the exception handler of a '   !"#$%&'()*+, None =?@APX`HwebbyRetrieve all path captureswebbyRetrieve a particular capturewebbySet response statuswebby+Append given header to the response headerswebby Similar to  but replaces a headerwebby9Get all request query params as a list of key-value pairswebby4Checks if the request contains the given query paramwebby"Gets the given query param's valuewebby Similar to [ except that it returns the handler with a '400 BadRequest' if the query param is missing.webbyGet the given header valuewebbyGet the  of the handlerwebbyReturns an action that returns successive chunks of the rquest body. It returns an empty bytestring after the request body is consumed.webbyGet all the request headerswebby"Returns request body size in byteswebby(Used to return early from an API handlerwebby6Send a binary stream in the response body. Also sets  Content-Type header to application/octet-streamwebby1Send plain-text in the response body. Also sets  Content-Type header to text/plain; charset=utf-8 webby0Return the raw request body as a lazy bytestring!webby?Parse the request body as a JSON object and return it. Raises & exception if parsing is unsuccessful."webbyQSet the body of the response to the JSON encoding of the given value. Also sets  Content-Type header to application/json; charset=utf-8#webbyBSet the body of the response to a StreamingBody. Doesn't set the  Content-Type; header, so you probably want to do that on your own with .$webbyTUse this function to create a WAI application. It takes a user/application defined appEnv data type and a list of routes. Routes are matched in the given order. If none of the requests match a request, a default 404 response is returned.%webbyVCreate a route for a user-provided HTTP request method, pattern and handler function.&webbyCreate a route for a POST5 request method, given the path pattern and handler.'webbyCreate a route for a GET5 request method, given the path pattern and handler.(webbyCreate a route for a PUT5 request method, given the path pattern and handler.)webbyCreate a route for a DELETE0 request method, given path pattern and handler. -. !"#/01$%&'()5An easy to use Haskell web-server inspired by Scotty.Apache License 2.0aditya.mmy@gmail.comNone =?@APX`K*  !"#$%&'()* %&'()! "#$ 2      !"#$%&'()*+,-./01234567839:39;3<=3<>34?34@34A67B3CD3CE3FG3HI3HJ3HK34L3MN3MO3MP3MQ3MR3MS3MT3MU3MV3MW3MX3MY6Z[6Z\6Z]3^_3^`3^a3^b3^c3^d3^e3^f3^g3^h3^i3^j3^k3^l3^m3^n3^o3^p3Cq3Cr3Cs3Ct3Cu3Cv3Cw3Cx3Cy3Cz3C{3C|34}34~3434343434333333336Z6Z6Z6Z6Z6Z6Z6Z33C3C3^3^3^3^3^3^3^3^3^3^3^3^3C3C3C3C3C3C3333333434343434343333333333333333334343434343434346666666663333333366663C3C663333333666363       334343433 !3 "3 #3 $34%34&34'34(34)34*34+34,34-3M.3M/34034132332432532632732832932:32;32<32=32=32>32?32?32@32A32A32B32C32C32D3EF3EF3EG3HI3HJ3HK3LM3LN3LO3LP3LP3LQ3HR3ST3SU3SV3SW3SX3SY3Z[3Z\3Z]3Z^3Z_3Z`3Za3Zb3Zc3Zd3Ze3Zf3Zg3Zh3Zi3Zj3Zk3Zl3Zm3Zn3Zo3Zp3qr3st3su3vw3vx3Fy3Fz3F{3F|3F}3F~3F3F3F3F3F3F333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 3  3  3 3333333C3C3C3C3C3C3C3C339 39!39"39#39$39%39&39'39(39)39*39+39,39-39.39/39039139239334534634734834934:34;34<3<=3<>3<?3@A3B3CD34E34F34G34H34I34J34K34L34M34N3O3P3Q3R3R6ZS6ZT6ZU VW VX VYZ[\Z[]^_`abcdefghfgifgjfgkfglZmnZmnZmoZpqZpqrstrsursvrswrxyrxzrx{|}~|||||||||||}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | |||||||||||||||||| |!|"|#|$|%|&|'|()|(*|(+|(,|(-|(.|(/|(0|(1|(2|(3|(4|(5|(6|(7|(8|(9|(:|(;|(<|(=|(>|(?|(@|(A|(B|(C|(D|(E|(F|(G|(H|(IZJKZJLMNOMNPMNQMNRMNSMTUMTVMTWMTXMTYZpZZ[\Z[\Z[]Z[^Z[_Z[`Z[aZbcZbcZbdZbeZbfZbgZbhZbiZbjZbklmnlmolmplmqlrslrtlrulrvlrwlrxlrylrzlr{lr|lr}lr~llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll l l l l llllllllllllllll l!l"l#l$l%l&l'(l')l'*l'+l,-l,.l,/l01l23l2456Zm7Zm89:9;9<9=9>?@?ABCDBCEBCFBCGBCHBCIBCJBCKBCLBCMBCNBCOBPQRSTRUVRUWXYZ[\]^_`abcdefghijklkkmknkokpkqkrksktkukvkwk%kxkykzk{k|k}k~kkkkkkkk "webby-1.0.1-2Itz7wKB11nBl1aV9N2si8WebbyPrelude Paths_webby Webby.Types Webby.Server Network.WaiRequest"wai-3.2.2.1-5zpqA5BwbEHA3TEM0B2xNV ApplicationWebbyServerConfig WebbyErrorWebbyJSONParseErrorWebbyParamParseErrorWebbyMissingCapture wppeParamName wppeErrMsgCapturesRoute RoutePatternWebbyMdefaultWebbyServerConfig setRoutessetExceptionHandlercaptures getCapture setStatus addHeader setHeaderparamsflagparamparam_headerrequestgetRequestBodyChunkActionheadersrequestBodyLengthfinishblobtextrequestBodyLBSjsonDatajsonstream mkWebbyAppmkRoutepostgetputdeletebaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip Data.Tuplefstsnd otherwisemap$coerceGHC.Real fromIntegral realToFrac Control.MonadguardGHC.ExtsIsListfromList fromListNjoinGHC.EnumBoundedminBoundmaxBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpred GHC.ClassesEq==/= GHC.FloatFloatingpiexpsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanh Fractional fromRational/recipIntegral toIntegerquotremdivmodquotRemdivModMonad>>=>>returnFunctorfmap<$GHC.NumNum+*-negate fromIntegerabssignumOrd>=minmax><compare<=GHC.ReadReadReal toRational RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2RealFracproperFractiontruncateroundceilingfloorGHC.ShowShowData.Typeable.InternalTypeableControl.Monad.Fail MonadFailfail Data.StringIsString fromString Applicative<*>pure*><*liftA2 Data.FoldableFoldabletoListfoldrlengthfoldMapnullfoldl'foldData.Traversable TraversabletraversemapM sequenceAsequence GHC.GenericsGeneric GHC.TypeNatsKnownNatGHC.OverloadedLabelsIsLabel fromLabel Semigroup<>sconcatstimesMonoidmconcatmemptymappend GHC.TypesBoolFalseTrueCharDoubleD#FloatF#IntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeInteger GHC.NaturalNatural GHC.MaybeMaybeNothingJustOrderingLTEQGTRatioRationalIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherLeftRightType ConstraintNatCmpNat CoercibleGHC.Stack.Types CallStackbytestring-0.10.8.2Data.ByteString.Internal ByteString'hashable-1.3.0.0-1RsrIcitxVDKffGN1TuMlmData.Hashable.ClassHashable hashWithSalt Data.Functor<$> text-1.2.3.1Data.Text.InternalTextconst.id4unordered-containers-0.2.13.0-7SUQaegvMerHp2sGZINBfMData.HashMap.InternalHashMapcontainers-0.6.0.1Data.Map.InternalMapGHC.IO.Handle.TypesHandleData.Bifunctor BifunctorfirstbimapsecondString Alternativeempty<|>manysome MonadPlusmzeromplusboundedEnumFromThenboundedEnumFrommaxIntminIntData.Functor.ContravariantcomparisonEquivalencedefaultEquivalencedefaultComparison>$$<>$<$<phantom Contravariant contramap>$ Predicate getPredicate Comparison getComparison EquivalencegetEquivalenceOpgetOpData.Functor.ComposeCompose getCompose Data.VoidvacuousabsurdVoidData.Semigroup mtimesDefaultcycle1 WrappedMonoidOption getOptionsortWithData.BitraversablebifoldMapDefault bimapDefaultbifor bisequence Bitraversable bitraverseData.BifoldablebifindbiallbianybiorbiandbielembilengthbinullbiListbiasum bisequence_bifor_ bitraverse_bifoldlMbifoldl'bifoldrMbifoldr' Bifoldablebifold bifoldMapbifoldrbifoldlData.List.NonEmptynonEmptyGHC.ExecutionStackshowStackTrace getStackTraceControl.Monad.IO.ClassMonadIOliftIOmfilter<$!>unless replicateM_ replicateM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterM mapAccumR mapAccumLforMControl.ApplicativeoptionalZipList getZipList Control.Arrow&&&Data.Functor.IdentityIdentity runIdentity System.IOwithFileGHC.IO.Handle.FDstderrstdin GHC.StackwithFrozenCallStack callStack GHC.Conc.Sync writeTVarreadTVarnewTVarcatchSTMthrowSTMSTMTVarstdout GHC.IORefIORefGHC.IOFilePath GHC.ExceptionprettyCallStack prettySrcLocGHC.Exception.Type Exception toException fromExceptiondisplayExceptionData.Functor.ConstConstgetConstfindallanyorand concatMapconcatasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlM Data.MonoidFirstgetFirstLastgetLastApgetApData.Semigroup.Internal stimesMonoidstimesIdempotentDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductAltgetAlt someNatValnatValSomeNat Data.OldListunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupgenericReplicategenericSplitAt genericDrop genericTake genericLength transpose intercalate intersperse isPrefixOf Text.Read readMaybereads fromRightfromLeftisRightisLeftpartitionEithersrightsleftseitherData.Ord comparingDown Data.ProxyProxyControl.Category>>><<< GHC.IO.IOModeIOModeReadMode WriteMode AppendMode ReadWriteMode byteSwap64 byteSwap32 byteSwap16 Data.BitstoIntegralSizedxor Data.Boolbool Data.Function&onfixvoid$><&>lcmgcd^^^oddeven denominator numeratorGHC.Charchrunzip3unzipzipWithzip3reversebreaksplitAtdroptake dropWhile takeWhile replicaterepeatiteratescanr1scanrscanl'scanl1scanluncons Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybe isNothingisJustmaybeswapuncurrycurryGHC.MVarMVarsubtract GHC.Stack.CCScurrentCallStackasTypeOf$!flipordwhen=<<liftA3<**>NonEmpty:| getCallStack HasCallStackstimesIdempotentMonoid SomeException&&||notData.ByteString.Short.Internal fromShortShortByteStringtoShorttransformers-0.5.5.0Control.Monad.Trans.Identity IdentityT runIdentityTData.IntMap.InternalIntMapData.IntSet.InternalIntSetData.Sequence.InternalSeqData.Set.InternalSetdeepseq-1.4.4.0Control.DeepSeqforce$!!deepseqNFDatarnfControl.Monad.Trans.MaybeMaybeT runMaybeTControl.Monad.Trans.ExceptExceptT'formatting-6.3.7-CsjBsItwNuR9OmL331hJa0Formatting.ShortFormattersshstdtFormatting.Internalsformatformat%(http-types-0.12.3-A2cx1Lg5j0cKG76Sfj8L06Network.HTTP.Types.URIencodePathSegmentsRelativeNetwork.HTTP.Types.Versionhttp20http11http10http09 HttpVersion httpMajor httpMinorNetwork.HTTP.Types.QueryLike QueryLiketoQueryrenderQueryBuilderPartialEscaperenderQueryPartialEscape decodePath encodePath extractPathdecodePathSegmentsencodePathSegments urlDecode urlEncodeurlEncodeBuilderparseSimpleQuery parseQueryrenderSimpleQuery renderQueryrenderQueryBuildersimpleQueryToQueryparseQueryTextqueryToQueryTextrenderQueryTextqueryTextToQuery QueryItemQuery QueryTextSimpleQueryItem SimpleQuery EscapeItemQEQNPartialEscapeQueryItemPartialEscapeQueryNetwork.HTTP.Types.StatusstatusIsServerErrorstatusIsClientErrorstatusIsRedirectionstatusIsSuccessfulstatusIsInformational networkAuthenticationRequired511 status511httpVersionNotSupported505 status505gatewayTimeout504 status504serviceUnavailable503 status503 badGateway502 status502notImplemented501 status501internalServerError500 status500requestHeaderFieldsTooLarge431 status431tooManyRequests429 status429preconditionRequired428 status428unprocessableEntity422 status422 imATeapot418 status418expectationFailed417 status417requestedRangeNotSatisfiable416 status416unsupportedMediaType415 status415requestURITooLong414 status414requestEntityTooLarge413 status413preconditionFailed412 status412lengthRequired411 status411gone410 status410 conflict409 status409requestTimeout408 status408proxyAuthenticationRequired407 status407notAcceptable406 status406methodNotAllowed405 status405 notFound404 status404 forbidden403 status403paymentRequired402 status402unauthorized401 status401 badRequest400 status400permanentRedirect308 status308temporaryRedirect307 status307 useProxy305 status305notModified304 status304 seeOther303 status303found302 status302movedPermanently301 status301multipleChoices300 status300partialContent206 status206resetContent205 status205 noContent204 status204nonAuthoritative203 status203 accepted202 status202 created201 status201ok200 status200switchingProtocols101 status101 continue100 status100mkStatusStatus statusCode statusMessageNetwork.HTTP.Types.MethodrenderStdMethod renderMethod parseMethod methodPatch methodOptions methodConnect methodTrace methodDelete methodPut methodHead methodPost methodGetMethod StdMethodGETPOSTHEADPUTDELETETRACECONNECTOPTIONSPATCHNetwork.HTTP.Types.HeaderparseByteRangesrenderByteRangesrenderByteRangesBuilderrenderByteRangerenderByteRangeBuilderhCookie hUserAgenthServerhRefererhRange hLocation hLastModifiedhIfRangehIfModifiedSincehDate hContentType hContentMD5hContentLengthhContentEncoding hConnection hCacheControlhAuthorizationhAcceptLanguagehAcceptHeader HeaderNameRequestHeadersResponseHeaders ByteRange ByteRangeFromByteRangeFromToByteRangeSuffix ByteRangesControl.Monad.Trans.Class MonadTranslift mtl-2.2.2Control.Monad.State.Classgetsmodify'modify MonadStatestateControl.Monad.Reader.Classasks MonadReaderasklocalreader runExceptTControl.Monad.Trans.ReaderReaderT runReaderTReader runReader withReader withReaderT Control.Monad.Trans.State.StrictStateT runStateTStaterunState evalState execState withState evalStateT execStateT%relude-0.7.0.0-64LH2yRssegADBU43ACIOgRelude.Lifted.TerminalputStrLnputStrprintgetLineRelude.Foldable.FoldanyMallMorMandMnotElemelemproductsumfoldMapMfoldMapAasumMap flipfoldl'Relude.Lifted.ConcurrentnewEmptyTMVarIO newTMVarIO readTVarIO newTVarIO atomically tryTakeMVar tryReadMVar tryPutMVartakeMVarswapMVarreadMVarputMVarnewMVar newEmptyMVar Relude.List!!?Relude.Container.OneOneOneItemoneRelude.NumericintegerToNaturalintegerToBoundedRelude.Bool.Guard||^&&^guardedguardMifMunlessMwhenMRelude.DeepSeq evaluateNF_ evaluateNF evaluateWHNF_ evaluateWHNFRelude.ExceptionbugExcBugRelude.List.NonEmptytaillastinithead whenNotNullM whenNotNull viaNonEmpty Relude.Monad chainedToRelude.Monad.Either whenRightM_ whenRightM whenRight_ whenRight whenLeftM_ whenLeftM whenLeft_whenLeft maybeToLeft maybeToRight rightToMaybe leftToMaybe Relude.Debug undefinederrortraceId traceShowMtraceM traceShowId traceShowtrace Undefined Relude.File appendFileLBS writeFileLBS readFileLBS appendFileBS writeFileBS readFileBSappendFileLTextwriteFileLText readFileLTextappendFileText writeFileText readFileTextRelude.Lifted.File appendFile writeFilereadFile Relude.PrintputLBSLnputLBSputBSLnputBS putLTextLnputLText putTextLnputTextRelude.String.Conversion fromStrictfromLazyshow readEitherLText LByteString ConvertUtf8 encodeUtf8 decodeUtf8decodeUtf8StrictToTexttoTextToLTexttoLTextToStringtoString LazyStricttoStricttoLazyRelude.String.Reexportunwordswordsunlineslines Relude.Nub unstableNubsortNubhashNubordNub Relude.Monoid memptyIfTrue memptyIfFalse maybeToMonoidRelude.Monad.Trans hoistEither hoistMaybeexecutingStateexecutingStateTevaluatingStateevaluatingStateT usingState usingStateT etaReaderT usingReader usingReaderTRelude.Monad.Maybe mapMaybeM whenNothingM_ whenNothingM whenNothing_ whenNothing whenJustMwhenJust?:Relude.List.ReexportcycleRelude.Lifted.IORefatomicWriteIORefatomicModifyIORef'_atomicModifyIORef_atomicModifyIORef'atomicModifyIORef modifyIORef' modifyIORef writeIORef readIORefnewIORefRelude.Lifted.Exitdie exitSuccess exitFailureexitWithRelude.Functor.Fmap??flap<<$>>Relude.FunctionidentityRelude.Applicative appliedTopassData.HashSet.InternalHashSetmaybeToExceptTexceptToMaybeTData.Text.Encoding.ErrorUnicodeException OnDecodeErrorOnError strictDecode lenientDecodeData.Text.EncodingdecodeUtf8With decodeUtf8' stm-2.5.0.0Control.Concurrent.STM.TMVarTMVarnewTMVar newEmptyTMVar takeTMVar tryTakeTMVarputTMVar tryPutTMVar readTMVar tryReadTMVar swapTMVar isEmptyTMVar mkWeakTMVarControl.Concurrent.STM.TVar modifyTVar'(resourcet-1.2.4.2-B3d6if2mvK0991yIwTpqV0Control.Monad.Trans.Resource runResourceT%Control.Monad.Trans.Resource.Internal liftResourceT ResourceT%unliftio-0.2.13-GPpH6mbMidHXkIz8WTxC3UnliftIO.ExceptionthrowIOlazyRequestBodystrictRequestBody ifRequestmodifyResponsedefaultRequestmapResponseStatusmapResponseHeadersresponseToStreamresponseHeadersresponseStatus responseRawresponseStream responseLBSresponseBuilder responseFile MiddlewareNetwork.Wai.InternalgetRequestBodyChunkvault requestMethod httpVersion rawPathInforawQueryStringrequestHeadersisSecure remoteHostpathInfo queryString requestBodyrequestHeaderHostrequestHeaderRangerequestHeaderRefererrequestHeaderUserAgentResponse StreamingBodyRequestBodyLength ChunkedBody KnownLengthFilePartfilePartOffsetfilePartByteCountfilePartFileSizeResponseReceivedparseIntheadMayversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName FinishThrownWEnvWyRespwscExceptionHandler wscRoutesunWebbyMweExceptionHandlerweAppEnv weRequest weCapturesweRespWebbyExceptionHandler wrResponded wrRespData wrHeaderswrStatus defaultWyResp runWebbyMasksWEnvresp400 matchRequesterrorResponse404invalidRoutesErr