!{5(      !"#$%&'Safe =?@APX`()*+,-./None =?@APX`90123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None =?@AMPX`"webbyVVarious 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 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.  None =?@APX`3W webbyIRetrieve the app environment given to the application at initialization. webbyRetrieve all path captureswebby-Retrieve a particular capture (TODO: extend?)webbyReturns an action that returns successive chunks of the rquest body. It returns an empty bytestring after the request body is consumed.webby0Return the raw request body as a lazy bytestring"webbyUUse this function, to create a WAI application. It takes a user/application defined appEnvo data type and a list of routes. 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.$webbyNCreate a route for a POST request method, given the path pattern and handler.%webbyMCreate a route for a GET request method, given the path pattern and handler.&webbyMCreate a route for a PUT request method, given the path pattern and handler.'webbyKCreate a route for a DELETE request method, given path pattern and handler.!  !"#$%&'None =?@APX`4Z(  !"#$%&'( #$%&'  !"       !"#$%&'()*+,-./0123456789:;<=8>?8>@8AB8AC89D89E8FG8FH8IJ89K8LM8LN8LO8LP8LQ8LR8LS8LT8LU8LV8LW8LX;YZ;Y[;Y\8]^8]_8]`8]a8]b8]c8]d8]e8]f8]g8]h8]i8]j8]k8]l8]m8]n8]o8]p8]q8]r8]s8]t8Fu8Fv8Fw8Fx8Fy8Fz8F{8F|8F}8F~8F8F8989898989898988888888;Y;Y;Y;Y;Y;Y;Y;Y88F8F8]8]8]8]8]8]8]8]8]8]8]8]8]8]8]8F8F8F8F8F8F88889898989898988888888888888888888888888888888888888888898989898989898988;;;;;;;;;8888 8  8  8  ;;;;8F8F8F8;;888888 8!"8!#8!$;%;&8'8(8(8)8)8*8+8+8,8-8.8/80808182838485868788;9;:8;;<8=>8?@ABC8DEFGHFGIFGJKLM89N89OPQR8ST8UV8WX8WY8WZ8[\8W]^_`^_a^_b^_c^_d^_e^_f^_g^_h^_i^_j^_k^_l^_m^_n^_o^_p^_q^_r^_s^_t^_u^_v^_w^_x^_y^_z^_{^_|^_|^_}89~8989898989898988F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8L8L89898888888888888888888888[8[8[8[8[8[8[8[8[8[888888888888888888888888888888888888888I8I8I8I8I8I8I8I8I8I8I8I8I8I88888888888 8 8 8  8 8 8 8888888888888 8!"8#$8#%8#&8#'8#(8#)8#*8#+8#,8#-8#.8#/8#/8#08#08#18#18#28#28#38#38#48#48#58#58#68#68W78W88W98W:8W;8W<8W=8W>8W?8W@8WA8WB8WC8DE8DF8DG8DH8DH8DI8DI8DJ8DJ8DK8DK8DL8DL8DM8DM8DN8DN8DO8DP8DQ8DR8DS8DT8DU8DV8DW8DX8DY8 Z8[\8[]8[^8[_8[`8[a8[b8[c8[d8[e8[f8[g8[h8Di8jk8jl8jm8jm8jn8op8oq8or8os8ot8ou8ov8ow8ox8oy8oz8{|8{}8{~8{888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888!8!8!8!8!8!8!8!8888888888888888[888888888888U88888888 8 8 8 8 888888888888888888 8!8"8D#8D$8D%8F&8F'8F(8F)8F*8F+8F,8F-8./8>08>18>28>38>48>58>68>78>88>98>:8>;8><8>=8>>8>?8@A8@B8@C8@D8@E8@F8@G8@H8AI8AJ8AK8LM8LN8LO8LP8LQ8LR8LS8LT8LU8LV8W8XY89Z89[89\89]89^89_89`89a89b89c89d89e89f89g89h89i89j8?k8?l8m8on8on;Yo;Yp;Yqrstrstrsurvwrvwrvxryzryz{|}{|~{rPPPPFG      !"#$%&'()*+,-../012131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1HIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjklmklnkloklpkqrkqskqtkqukqvkwxkwykwzry{ry|ry}ry~ryryryrvrvrsrsrsrsrsrsrsryryK K K K K KKKKKKKKKKKKKK !"#$%&'()*+,-./01232425262728292:2;2<2=2>2?2"2@2A2B2C2D2E2F2G2H2I2I2J2K2L2MNOPQPRSTUVWXQYZ[\]^_`abc"webby-0.2.0-EIi9Lo2DETm1vCXuSr0VMMWebby Paths_webby WebbyPrelude Webby.Types Webby.Server"wai-3.2.2.1-5QmEUti7xWq89hNhFKaD5s Network.Wai Application WebbyErrorWebbyJSONParseErrorWebbyParamParseErrorWebbyMissingCapture wppeParamName wppeErrMsgCaptures RoutePatternWebbyMWEnv getAppEnv runAppEnvcaptures getCapture setStatus addHeader setHeaderparamsflagparamparam_headerrequestgetRequestBodyChunkActionheadersrequestBodyLengthfinishblobtextrequestBodyLBSjsonDatajsonstream mkWebbyAppmkRoutepostgetputdeleteversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamebaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip Data.Tuplefstsnd otherwise$GHC.Real fromIntegral realToFrac Control.MonadguardjoinGHC.EnumBoundedminBoundmaxBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpred GHC.ClassesEq==/= GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanhlog1pexpm1log1pexplog1mexp Fractional fromRational/recipIntegral toIntegerquotremdivmodquotRemdivModMonad>>=>>returnFunctorfmap<$GHC.NumNum+*-negate fromIntegerabssignumOrd>=minmax><compare<=GHC.ReadReadReal toRational RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2RealFracproperFractiontruncateroundceilingfloorGHC.ShowShowData.Typeable.InternalTypeable Data.StringIsString Applicative<*>pure*><*liftA2 Data.FoldableFoldabletoListfoldrlengthnullfoldMapfoldlfoldl'maximumminimumelemfoldfoldr'Data.Traversable TraversabletraversemapM sequenceAsequence GHC.GenericsGenericRepfromtoGeneric1Datatype datatypeName moduleName packageName isNewtype ConstructorconName conFixity conIsRecordSelectorselNameselSourceUnpackednessselSourceStrictnessselDecidedStrictness GHC.TypeNatsKnownNat GHC.TypeLits KnownSymbolGHC.OverloadedLabelsIsLabel fromLabel Semigroup<>sconcatstimesMonoidmconcatmemptymappend GHC.RecordsHasFieldgetField GHC.TypesBoolFalseTrueCharDoubleD#FloatF#IntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeInteger GHC.MaybeMaybeNothingJustOrderingLTEQGTRatio:%Rational GHC.Stable StablePtrIOWordGHC.WordWord8Word16Word32Word64GHC.PtrPtrFunPtr Data.EitherEitherLeftRightType ConstraintV1U1K1unK1M1unM1:+:L1R1:*::.:Comp1unComp1Rec0D1C1S1URecNatSymbolCmpNat Coercible GHC.StaticPtr StaticPtrGHC.Stack.Types CallStackbytestring-0.10.8.2Data.ByteString.Internal ByteString Data.Functor<$>'hashable-1.2.7.0-2SI038axTEd7AEZJ275kpiData.Hashable.ClassHashable hashWithSalthash text-1.2.3.1Data.Text.InternalTextconst.containers-0.6.0.1Data.Map.InternalMapGHC.IO.Handle.TypesHandleGHC.STST GHC.Conc.SyncforkOnWithUnmaskforkIOWithUnmaskforkOnControl.ConcurrentforkOSThreadId"async-2.2.2-EbxQ7tk0OFk9dJNMtaidSfControl.Concurrent.Async concurrentlyrace_racelink2linkwaitBothwaitEitherCancel waitEither_ waitEitherwaitEitherCatchCancelwaitEitherCatch waitAnyCancelwaitAnywaitAnyCatchCancel waitAnyCatch cancelWithcancelpoll waitCatchwait withAsyncOnwithAsyncBound withAsyncasyncOn asyncBoundasyncAsync asyncThreadId ConcurrentlyrunConcurrently Alternativeempty<|>manysome MonadPlusmzeromplus GHC.Conc.IO threadDelayintegralEnumFromThenTointegralEnumFromTointegralEnumFromThenintegralEnumFromgcdWord'gcdInt'^^%^^^%^numericEnumFromThenTonumericEnumFromTonumericEnumFromThennumericEnumFrom notANumberinfinity ratioPrec1 ratioPrecunderflowError overflowErrorratioZeroDenominatorError divZeroErrorreduceboundedEnumFromThenboundedEnumFrommaxIntminInt Data.Complexphase magnitudepolarcismkPolar conjugateimagPartrealPartComplex:+ Data.VoidvacuousabsurdVoidData.Semigroupoption mtimesDefaultdiffcycle1 WrappedMonoidOption getOptionthreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOSWithUnmask forkFinallyrtsSupportsBoundThreadsControl.Concurrent.ChanwriteList2ChangetChanContentsdupChanreadChan writeChannewChanChanControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNData.Bifunctor BifunctorfirstsecondbimapData.List.NonEmptynonEmptyGHC.ExecutionStackshowStackTrace getStackTraceGHC.ExecutionStack.InternalSrcLoc sourceFile sourceLine sourceColumnLocation objectName functionNamesrcLocControl.Monad.IO.ClassMonadIOliftIOSystem.EnvironmentgetArgs System.Exit exitSuccess exitFailureexitWithmfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMfoldMapDefault fmapDefault mapAccumR mapAccumLforMforControl.ApplicativeoptionalZipList getZipListData.Functor.IdentityIdentity runIdentity System.IOwithFileGHC.IO.Handle.FDopenFilestderrstdinControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarMaskedwithMVarswapMVar GHC.StackwithFrozenCallStack callStackControl.ExceptionallowInterruptcatchesControl.Monad.ST.ImpfixSTControl.Exception.BasebracketOnErrorbracket_finallybracket onExceptiontryJusttry mapException handleJusthandle catchJustPatternMatchFail RecSelError RecConError RecUpdError NoMethodError TypeErrorNonTerminationNestedAtomicallycatchSTMthrowSTMorElseretry atomicallymkWeakThreadIdthreadCapability myThreadId killThreadsetNumCapabilitiesgetNumCapabilitiesforkIOSTMGHC.IO.ExceptionioErrorasyncExceptionFromExceptionasyncExceptionToExceptionBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAllocationLimitExceededCompactionFailedAssertionFailedSomeAsyncExceptionAsyncException StackOverflow HeapOverflow ThreadKilled UserInterruptArrayExceptionIndexOutOfBoundsUndefinedElementExitCode ExitSuccess ExitFailurestdoutGHC.IOevaluateuninterruptibleMaskuninterruptibleMask_maskmask_getMaskingState interruptiblecatchFilePath MaskingStateUnmaskedMaskedInterruptibleMaskedUninterruptible IOException GHC.ExceptionprettyCallStack prettySrcLoc ErrorCallErrorCallWithLocationGHC.Exception.Type Exception toException fromExceptiondisplayExceptionArithExceptionOverflow UnderflowLossOfPrecision DivideByZeroDenormalRatioZeroDenominator Data.TypeableeqTcasttypeRepTypeRepData.Functor.ConstConstgetConstfindnotElem minimumBy maximumByallanyorand concatMapconcatmsumasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlMfoldrM Data.MonoidFirstgetFirstLastgetLastApgetApData.Semigroup.Internal stimesMonoidstimesIdempotentDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductAltgetAltFixityPrefixInfixFixityIPrefixIInfixI AssociativityLeftAssociativeRightAssociativeNotAssociativeMetaMetaDataMetaConsMetaSel someSymbolVal someNatVal symbolValnatVal SomeSymbolSomeNat Data.OldListunfoldrsortBysort permutations subsequencestailsinitsgroupBygroupgenericReplicategenericSplitAt genericDrop genericTake genericLength transpose intercalate intersperse isPrefixOf Text.Read readMaybe readEitherreads fromRightfromLeftisRightisLeftpartitionEithersrightsleftseitherData.Ord comparingDown Data.ProxyProxyData.Type.Coercionrepr coerceWithCoercionData.Type.Equality gcastWithcastWithtranssym:~:Refl Foreign.PtrWordPtrIntPtr GHC.IO.IOModeIOModeReadMode WriteMode AppendMode ReadWriteModeForeign.StorableStorable byteSwap64 byteSwap32 byteSwap16runST Data.BitstoIntegralSizedpopCountDefaulttestBitDefault bitDefaultBits.&..|.xor complementshiftrotatezeroBitsbitsetBitclearBit complementBittestBit bitSizeMaybebitSizeisSignedshiftLshiftRrotateLrotateRpopCount FiniteBits finiteBitSizecountLeadingZeroscountTrailingZeros Data.Function&onfixvoid$><&>lcmgcd^^^oddeven denominator numeratorGHC.CharchrunzipzipWithreversebreaksplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanrscanl'scanl Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybe isNothingisJustmaybeswapuncurrycurryGHC.MVar isEmptyMVar tryReadMVar tryPutMVar tryTakeMVarputMVarreadMVartakeMVarnewMVar newEmptyMVarMVarsubtract GHC.Stack.CCScurrentCallStackasTypeOfuntilflipordapliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA<**>NonEmpty:| getCallStack HasCallStackstimesIdempotentMonoid SomeException&&||nottransformers-0.5.5.0Control.Monad.Trans.State.LazyStateT runStateTControl.Monad.Trans.ReaderReaderT runReaderTControl.Monad.Trans.ExceptExceptT&resourcet-1.2.2-9mQA4C1qNtbAMbQUuTwoFY%Control.Monad.Trans.Resource.Internal ResourceT liftResourceTControl.Monad.Trans.Resource runResourceTControl.Monad.Trans.ClassliftData.IntMap.InternalIntMapData.IntSet.InternalIntSetData.Sequence.InternalSeqData.Set.InternalSetdeepseq-1.4.4.0Control.DeepSeqforce$!!deepseqNFDatarnf'formatting-6.3.7-HY0BwJGlB2C8iTO8r0ZBERFormatting.ShortFormattersshstdtFormatting.Internalsformatformat% hashUsing(http-types-0.12.3-E5KSR7WXSnOHFYucAejn4UNetwork.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 ByteRanges mtl-2.2.2Control.Monad.State.Classgetsmodify MonadStatestateControl.Monad.Reader.Classasks MonadReaderasklocalreaderControl.Monad.Error.Class MonadError throwError catchErrorExcept runExcept mapExcept withExcept runExceptT mapExceptT withExceptTReader runReaderStaterunState evalState execState withState evalStateT execStateT&protolude-0.2.3-D8loZCZ78nIBbiRBk25wUu ProtoludedieshowliftIO2liftIO1guardedAguardedpassthrowTothrowIOprintapplyNunsnocunconsmapidentityLText LByteStringDebugwitness undefinednotImplementedtraceIdtraceM traceShowM traceShowId traceShowtraceIOtraceProtolude.Show putErrTextputLByteString putByteStringputLTextputTextPrinthPutStr hPutStrLnputStrputStrLnputErrLnProtolude.SemiringzeroSemiring<.>oneProtolude.SafeatDefatMay foldl1May' foldl1May foldr1May maximumDef minimumDef maximumMay minimumMaylastDeflastMaytailSafetailDeftailMayinitSafeinitDefinitMayheadDefheadMayProtolude.Panicpanic FatalErrorfatalErrorMessageProtolude.MonadliftM2'liftM' concatMapMProtolude.ListsumproductlistordNubsortOnheadProtolude.Functorforeach<<$>>Protolude.ExceptionstryIOnotehushProtolude.Either maybeToEither maybeEmpty maybeToLeft maybeToRight rightToMaybe leftToMaybeProtolude.ConvtoSLtoSLeniencyStrictLenient StringConvstrConvProtolude.Bool<&&>&&^<||>||^guardMifMunlessMwhenMboolProtolude.Base$!Protolude.Applicative<<*>>liftAA2purereitherAorEmptyorAltthrowEcatchEData.Text.Encoding.ErrorUnicodeException OnDecodeErrorOnError strictDecode lenientDecodeignorereplaceData.Text.EncodingdecodeUtf8With decodeUtf8 decodeUtf8' encodeUtf8Data.Text.LazytoStrict fromStrict Data.Text.IOreadFile writeFile appendFileinteract getContentsgetLine stm-2.5.0.0Control.Monad.STMchecklazyRequestBodystrictRequestBody ifRequestmodifyResponsedefaultRequestmapResponseStatusmapResponseHeadersresponseToStreamresponseHeadersresponseStatus responseRawresponseStream responseLBSresponseBuilder responseFile MiddlewareNetwork.Wai.InternalgetRequestBodyChunkRequestvault requestMethod httpVersion rawPathInforawQueryStringrequestHeadersisSecure remoteHostpathInfo queryString requestBodyrequestHeaderHostrequestHeaderRangerequestHeaderRefererrequestHeaderUserAgentResponse StreamingBodyRequestBodyLength ChunkedBody KnownLengthFilePartfilePartOffsetfilePartByteCountfilePartFileSizeResponseReceiveddecodeUtf8LenientparseInt FinishThrownWyRespunWebbyM weLogTime weLoggerSetweAppEnv weRequest weCapturesweResp wrResponded wrRespData wrHeaderswrStatus defaultWyResp runWebbyMresp400 matchRequesterrorResponse404invalidRoutesErr