1      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                        ! " # $ % & ' ( ) * + , - ./0 None16Information received from Rpxnow after a valid login. 2FMake a post request with parameters to the URL and return a response. 3Attempt to log a user in. 14562URL Post parameters Response body 3API key given by RPXNOW. Token passed by client. 789:14563145623789:  Safe-Inferred;<= >?@ABCD;<=;<= NoneEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_EFGHIEFGHINone4State for a single wiki. 7=Abstract representation of page layout (tabs, scripts, etc.) ]4Common state for all gitit wikis in an application. t Data for rendering a wiki page. ~6Data structure for information read from config file. (Path of repository containing filestore Type of repository 'Default page markup type for this wiki #How to handle LaTeX math in pages? &Treat as literate haskell by default? #Show Haskell code with bird tracks Combinator to set  REMOTE_USER request header *Handler for login, logout, register, etc. 0Specifies which actions require authentication. Path of users database -Seconds of inactivity before session expires $Directory containing page templates Path of server log file /Severity filter for log messages (DEBUG, INFO, 5 NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY) Path of static directory  Names of plugin modules to load %Show table of contents on each page? Max size of file uploads Max size of page uploads IP address to bind to  Port number to serve content on !Print debug info to the console? The front page of the wiki $Pages that cannot be edited via web %Pages that cannot be deleted via web *Default summary if description left blank Nothing = anyone can register.  Just (prompt, answers) = a user will # be given the prompt and must give ! one of the answers to register. %Use ReCAPTCHA for user registration. RPX domain and key  Should responses be compressed? Should responses be cached? Directory to hold cached pages 0Map associating mime types with file extensions $Command to send notification emails Text of password reset email $Markup syntax help for edit sidebar Provide an atom feed? "Base URL of wiki, for use in feed Title of wiki, used in feed 2Should WikiLinks be absolute w.r.t. the base URL? .Number of days history to be included in feed 3Number of minutes to cache feeds before refreshing Allow PDF export? .Directory to search for pandoc customizations !Filter HTML through xss-sanitize 3The default number of days in the past to look for "recent" activity =Github client data for authentication (id, secret, callback, , authorize endpoint, access token endpoint) `  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopaqrstuvwxyz{|}~bcdefg  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~tuvwxyz{|}spqrqrdefghmnoijkl]^_`abcEFG\X[ZYRSTUVWQHIJKLMNOP789:;<=>?@ABCD165432-./0  !"#$%&'()*+, &`  !  !"#$%&'()*+,-./01654327 89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX[ZY\]^_`abcdefghijklmnopaqrst uvwxyz{|}~3bcdefg NonehijklmnopqrstuvwxyhijklmnopqrstuvwxyhijklmnopqrstuvwxyNoneARequire a logged in user if the authentication level demands it. < Run the handler if a user is logged in, otherwise redirect  to login page. Like 3, but with a predicate that the user must satisfy. Run the handler after setting  REMOTE_USER with the user from  the session. Run the handler after setting  REMOTE_USER from the  authorization J header. Works with simple HTTP authentication or digest authentication. Returns Just logged in user or Nothing. unlessNoEdit responder fallback runs  responder unless the A page has been designated not editable in configuration; in that  case, runs fallback. !unlessNoDelete responder fallback runs  responder unless the B page has been designated not deletable in configuration; in that  case, runs fallback. <Returns the current path (subtracting initial commands like /_edit). 7Returns the current page name (derived from the path). Returns the contents of the referer header. :Returns the base URL of the wiki in the happstack server. ' So, if the wiki handlers are behind a dir foo, getWikiBase will  return /foo/. getWikiBase doesn't know anything about HTTP 7 proxies, so if you use proxies to map a gitit wiki to /foo/,  you'4ll still need to follow the instructions in README. zThe pure core of . -Returns path portion of URI, without initial /. * Consecutive spaces are collapsed. We don't want to distinguish  Hi There and  Hi There. GReturns encoded URL path for the page with the given name, relative to  the wiki base. :Returns the filestore path of the file containing the page' s source. /Retrieves a mime type based on file extension. 'Simple helper for validation of forms. )Succeeds if path is an index path: e.g. /foo/bar/. 5Runs a server monad in a local context after setting  the message request header. ,Returns a filestore object derived from the @ repository path and filestore type specified in configuration. !{|}z~&list of conditions and error messages list of error messages !{|}z~NoneCExpire a cached file, identified by its filename in the filestore. 8 If there is an associated exported PDF, expire it too. K Returns () after deleting a file from the cache, fails if no cached file. None6Read file as UTF-8 string. Encode filename as UTF-8. @Perform a function a directory and return to working directory. :Perform a function in a temporary directory and clean up. 1Create a temporary directory with a unique name. :Returns a list, if it is not null, or a backup, if it is. 0Split a string containing a list of categories. "Trim leading and trailing spaces.  Show Bool as yes or no.   None?Read a string (the contents of a page file) and produce a Page < object, using defaults except when overridden by metadata. >Write a string (the contents of a page file) corresponding to : a Page object, using explicit metadata only when needed. (Read categories from metadata strictly.  NoneNone%Oauth2 configuration (client secret) /Authentication code gained after authorization =Github state, we expect the state we sent in loginGithubUser user email and name (password none)   Safe-Inferred  NoneNWhen we create a PDF or ODT from a Gitit page, we need to fix the URLs of any Q images on the page. Those URLs will often be relative to the staticDir, but the P PDF or ODT processor only understands paths relative to the working directory. TBecause the working directory will not in general be the root of the gitit instance T at the time the Pandoc is fed to e.g. pdflatex, this function replaces the URLs of @ images in the staticDir with their correct absolute file path. NoneReturns formatted page ;Given a compiled string template, returns a page renderer. 8Returns a page template with gitit variables filled in. NoneInitialize Gitit State. Recompile the page template.  Create templates dir if it doesn' t exist. )Create page repository unless it exists. *Create static directory unless it exists. NoneGReturns username of logged in user or null string if nobody logged in. "/Authentication code gained after authorization UThe parameters passed by the RPX callback call (after authentication has taken place None$Get configuration from config file.  %Get configuration from config files. 5A version of readfile that treats the file as UTF-8.  )Returns the default gitit configuration.  ARead a file associating mime types with extensions, and return a C map from extensions to types. Each line of the file consists of a B mime type, followed by space, followed by a list of zero or more / extensions, separated by spaces. Example: text/plain txt text             None'  Converts a ContentTransformer into a GititServerPart;  specialized to wiki pages.   Converts a ContentTransformer into a GititServerPart;  specialized to non-pages. Responds with raw page source. 7Responds with raw source (for non-pages such as source  code files). "Responds with rendered wiki page. 2Responds with page exported into selected format. 'Responds with highlighted source code. +Responds with non-highlighted source code. 4Responds with rendered page derived from form data. 8Applies pre-commit plugins to raw page source, possibly  modifying it. Responds with raw source. 2Responds with a wiki page in the format specified  by the format parameter. /Responds with a wiki page. Uses the cache when 9 possible and caches the rendered page when appropriate. 0Responds with highlighted source code in a wiki 2 page template. Uses the cache when possible and , caches the rendered page when appropriate. =Caches a response (actually just the response body) on disk, > unless the context indicates that the page is not cacheable. 3Returns cached page if available, otherwise mzero. Returns raw file contents. Converts raw contents to a text/plain response. =Converts raw contents to a response that is appropriate with " a mime type derived from the page' s extension. BConverts Pandoc to response using format specified in parameters. AAdds the sidebar, page tabs, and other elements of the wiki page  layout to the raw content. @Converts Page to Pandoc, applies page transforms, and adds page  title. 8Converts source text to Pandoc using default page type. JDetects if the page is a redirect page and handles accordingly. The exact  behaviour is as follows: If the page is not8 a redirect page (the most common case), then check the J referer to see if the client came to this page as a result of a redirect K from another page. If so, then add a notice to the messages to notify the K user that they were redirected from another page, and provide a link back F to the original page, with an extra parameter to disable redirection 2 (e.g., to allow the original page to be edited).  If the page is6 a redirect page, then check the query string for the  redirect= parameter. This can modify the behaviour of the redirect as  follows:  If the redirect6 parameter is unset, then check the referer to see if M client came to this page as a result of a redirect from another page. If J so, then do not redirect, and add a notice to the messages explaining I that this page is a redirect page, that would have redirected to the M destination given in the metadata (and provide a link thereto), but this M was stopped because a double-redirect was detected. This is a simple way I to prevent cyclical redirects and other abuses enabled by redirects. 1 redirect to the same page. If the client did not come to this page as M a result of a redirect, then redirect back to the same page, except with " the redirect parameter set to "yes".  If the redirect parameter is set to "yes", then redirect to the J destination specificed in the metadata. This uses a client-side (meta M refresh + javascript backup) redirect to make sure the referer is set to  this URL.  If the redirect parameter is set to "no", then do not redirect, but 0 add a notice to the messages that this page would have redirected to H the destination given in the metadata had it not been disabled, and L provide a link to the destination given in the metadata. This behaviour  is the revision+ parameter is present in the query string. /Converts contents of page file to Page object.  "Converts pandoc document to HTML. !!Returns highlighted source code. applyTransform a t applies the transform t to input a. "=Applies all the page transform plugins to a Pandoc document. >Applies all the pre-parse transform plugins to a Page object. >Applies all the pre-commit transform plugins to a raw string. #7Puts rendered page content into a wikipage div, adding  categories. $&Adds page title to a Pandoc document. %(Adds javascript links for math support. &!Adds javascripts to page layout. GUpdates the layout with the result of applying f to the current layout (Convert links with no URL to wikilinks. ,5Derives a URL from a list of Pandoc Inline elements. -)Convert a list of inlines into a string. 4  Raw contents for response body  Mime type  !  "#$%&'()*+  ,-"   !"#$%&'()*+,-"   !"#$%&()*'+,-4   !  "#$%&'()*+  ,-None Get the last N days history.    None !"#$%&'()*+,-./012345678 !"#$%&')*+.01235678 !"#$%&'()*+,-./012345678None.$Happstack handler for a gitit wiki. 9Like j,, but if file is not found, fail instead of  returning a 404 error. / Recompiles the gitit templates. 0?Converts a gitit Handler into a standard happstack ServerPart. .9:/0;'  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0 ./0.9:/0;< !"#$%&'()*+,-./0123456789:;<=>?@@ABCDEFGHIIJKLMNOPQRSTUVWXYYZ[\]^_`abbcdefghijkllmnopqrrstuvvwxyyz{|}~                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6789 : ; : < = > ? @ A B C DEFGEFHEFIJKLJKMJKNJKO P Q R S TUVWUVXUYZU[\U[]U[^U[_U[`U[aU[bU[cU[dUefUegUehUeiUejUekUelUemUenUeoUepUeqUerUesUetUeuUevUewUexUyzUy{Uy|Uy}Uy~UyUyUyUyUyUyUyUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU U U U U UUUUUUUUUUUUUUUUUUU U!U"U#U$U$U%U&U'U(U)U*U+U+U,U-U.U/U0U1U2U3U4U5U6U7U7U8U9U:U;U<U=U>U>U?U@UAUBUBUCUDUEUFUGUHUIUJUKULUMUIUNUOUPUQURUSUTUUUVUWUXUYUZUZU[U\U]U^U_U`aU`bU`cU`dU`eU`fU`gU`hU`iU`iU`jU`kU`lU`mU`nUopUoqUorUosUos{tuvwxy z { | } ~                                !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGgitit-0.10.6.1Network.Gitit.Types Network.GititNetwork.Gitit.Framework#Network.Gitit.Authentication.GithubNetwork.Gitit.LayoutNetwork.Gitit.InitializeNetwork.Gitit.AuthenticationNetwork.Gitit.Config Network.Gitit.ContentTransformerNetwork.Gitit.RpxnowNetwork.Gitit.Compat.ExceptNetwork.Gitit.ServerNetwork.Gitit.StateNetwork.Gitit.CacheNetwork.Gitit.UtilNetwork.Gitit.PageNetwork.Gitit.Plugins Paths_gititNetwork.Gitit.ExportNetwork.Gitit.FeedNetwork.Gitit.Handlers GithubConfigoAuth2orgHandlerGititServerPart WikiState wikiConfig wikiFileStoreCommandParams pUsername pPassword pPassword2 pRevision pDestinationpForUserpSincepRawpLimit pPatterns pGotoPage pFileToDelete pEditedText pMessagespFrompTopFormatpSHA1pLogMsgpEmail pFullName pAccessCode pWikiname pPrintable pOverwrite pFilename pFilePathpConfirm pSessionKey pRecaptcha pResetCode pRedirect RecaptcharecaptchaChallengeFieldrecaptchaResponseFieldTabDiffTab DiscussTab HistoryTabEditTabViewTab PageLayout pgPageName pgRevision pgPrintable pgMessagespgTitle pgScriptspgShowPageTools pgShowSiteNav pgMarkupHelppgTabs pgSelectedTab pgLinkToFeed HasContext getContext modifyContextContextctxFile ctxLayout ctxCacheablectxTOC ctxBirdTracks ctxCategoriesctxMetaPluginM PluginData pluginConfig pluginUser pluginRequestpluginFileStorePluginPreCommitTransformPreParseTransform PageTransformContentTransformer GititStatesessionsusers templatesPath renderPagepluginsUser uUsername uPassworduEmailPasswordpSaltpHashedSessions unsession SessionData sessionUsersessionGithubState SessionKeyPagepageName pageFormatpageLHSpageTOC pageTitlepageCategoriespageTextpageMetaConfigrepositoryPathrepositoryTypedefaultPageType mathMethod defaultLHSshowLHSBirdTrackswithUserrequireAuthentication authHandleruserFilesessionTimeout templatesDirlogFilelogLevel staticDir pluginModulestableOfContents maxUploadSize maxPageSizeaddress portNumber debugMode frontPagenoEditnoDeletedefaultSummaryaccessQuestion useRecaptcharecaptchaPublicKeyrecaptchaPrivateKey rpxDomainrpxKeycompressResponsesuseCachecacheDirmimeMap mailCommandresetPasswordMessage markupHelpuseFeedbaseUrluseAbsoluteUrls wikiTitlefeedDaysfeedRefreshTime pdfExportpandocUserData xssSanitizerecentActivityDays githubAuthAuthenticationLevelForRead ForModifyNever MathMethodMathJaxRawTeXWebTeX JsMathScriptMathML FileStoreType MercurialDarcsGitPageType MediaWikiDocBookOrgTextileHTMLLaTeXRSTMarkdown sessionDatasessionDataGithubState runPluginM fromEntities githubConfigupdateGititStatequeryGititStategetUser getConfig getFileStore authenticateauthenticateUserThatwithUserFromSessionwithUserFromHTTPAuthgetLoggedInUser unlessNoEditunlessNoDeletegetPathgetPage getReferer getWikiBaseuriPathisPage isPageFile isDiscussPageisDiscussPageFile isSourceCode urlForPage pathForPagegetMimeTypeForExtensionvalidate guardCommand guardPath guardIndex guardBareBase withMessagesfilestoreFromConfig stringToPage pageToStringreadCategoriesGithubCallbackParsGithubLoginError ghUserMessage ghDetailsloginGithubUser getGithubUserdefaultPageLayout formattedPagedefaultRenderPagefilledPageTemplateuploadsAllowedinitializeGititStaterecompilePageTemplatecompilePageTemplatecreateTemplateIfMissingcreateRepoIfMissingcreateDefaultPagescreateStaticIfMissing loginUserFormformAuthHandlershttpAuthHandlersgithubAuthHandlersrpxAuthHandlersgetConfigFromFilegetConfigFromFilesgetDefaultConfigreadMimeTypesFilerunPageTransformerrunFileTransformer showRawPageshowFileAsTextshowPage exportPageshowHighlightedSourceshowFilepreviewapplyPreCommitPlugins cacheHtml cachedHtml rawContents textResponsemimeFileResponse mimeResponse exportPandocapplyWikiTemplatepageToWikiPandoc pageToPandoc pandocToHtmlhighlightSourceapplyPageTransforms wikiDivifyaddPageTitleToPandocaddMathSupport addScripts getParams getFileName getPageName getLayout getCacheable inlinesToURLinlinesToStringwikireloadTemplates runHandler IdentifiercurluserIdentifieruserData parseProfile takeString getObject resultToMonadErrornoMsgstrMsg mtl-2.2.1Control.Monad.Error.Class catchError throwError MonadErrortransformers-0.4.1.0Control.Monad.Trans.ExceptExceptTExcept runExcept runExceptTwithExpiresHeaderssetContentType setFilename lookupIPAddrgetHosthappstack-server-7.3.9Happstack.Server.I18N bestLanguageacceptLanguage%Happstack.Server.Internal.CompressioncompressedResponseFilterHappstack.Server.SimpleHTTPwaitForTerminationbindIPv4bindPortsimpleHTTPWithSocket'simpleHTTPWithSocket simpleHTTP'' simpleHTTP' simpleHTTP parseConfigHappstack.Server.RoutingnoTrailingSlash trailingSlashanyPathuriRestpathwithHosthostdirsdirnullDirmethodSP methodOnlymethodMmethodhttpshttpguardRq matchMethod MatchMethod)Happstack.Server.FileServe.BuildingBlocks mimeTypesserveDirectory fileServe serveFileFrom serveFiledefaultIxFiles asContentTypeguessContentTypeMMimeMapEnableBrowsingDisableBrowsingBrowsingHappstack.Server.ValidationlazyProcValidator noopValidatorwdgHTMLValidator runValidator validateConfsetValidatorSP setValidatorHappstack.Server.Proxy unrproxify unproxify rproxyServe proxyServe' proxyServeHappstack.Server.ErrorerrorHandlerSPsimpleErrorHandlerspUnwrapErrorTHappstack.Server.Auth basicAuthHappstack.Server.MonadsrequireMrequire neverExpires setHeaderM addHeaderM getHeaderM HappstackHappstack.Server.RqData bytestring queryStringbodywithDatagetData withDataFn getDataFn decodeBody lookPairsBS lookPairslookFile lookReadslookReadreadCookieValuelookCookieValue lookCookie lookTexts' lookTexts lookText'lookTextlookslooklookBSslookBS lookInputs lookInputcheckRqMcheckRqreadRq unsafeReadRq mapRqDataunErrorsErrorsRqEnvRqData rqDataError localRqEnvaskRqEnv HasRqDatafromDataFromDataHappstack.Server.ResponseprettyResponse badGatewayinternalServerErrorrequestEntityTooLargenotFound forbidden unauthorized badRequest tempRedirectseeOtherfoundmovedPermanently noContentokrespsetResponseCodeifModifiedSinceflatten toResponseBS toResponse toMessage toContentType ToMessageHappstack.Server.Cookie expireCookie addCookies addCookieHappstack.Server.Client getResponse Happstack.Server.Internal.Monadsescape'escape ignoreFilters filterFunmapServerPartT'mapServerPartT ServerPart ServerPartTlocalRqaskRq ServerMonad getFilter composeFilter setFilter FilterMonadUnWebT finishWithWebMonad%Happstack.Server.Internal.MessageWrapdefaultBodyPolicy maxHeadermaxRAMmaxDisk inputWorker BodyPolicyHappstack.Server.Internal.Types fromReadSreadDec'redirectresultBSresultaddHeaderUnsafe addHeaderBS addHeadersetHeaderUnsafe setHeaderBS setHeaderhasHeaderUnsafe hasHeaderBS hasHeadergetHeaderUnsafe getHeaderBS getHeader mkHeaders setRsCoderqURLreadInputsBodytakeRequestBody contentLengthchunkednoContentLength nullRsFlags logMAccessnullConf continueHTTP isHTTP1_0 isHTTP1_1 HttpVersion LogAccess threadGrouptimeout logAccess validatorportConfGETHEADPOSTPUTDELETETRACEOPTIONSCONNECTMethodhValuehName HeaderPairHeaders ContentLengthTransferEncodingChunkedNoContentLengthLength rsfLengthRsFlagsinputContentType inputFilename inputValueInputHost rsValidatorrsBodyrsFlags rsHeadersrsCodeResponsesfCountsfOffset sfFilePathSendFilerqPeerrqBody rqHeaders rqVersion rqCookies rqInputsBody rqInputsQueryrqQueryrqUrirqPathsrqMethodrqSecureRequestunBodyBodyRqBody fromReqURI FromReqURI Happstack.Server.Internal.CookiemkCookiehttpOnlysecure cookieValue cookieName cookieDomain cookiePath cookieVersionCookieSessionMaxAgeExpiresExpired CookieLife'Happstack.Server.Internal.RFC822Headers ctParameters ctSubtypectType ContentType$fFromDataCommand$fFromDataParams$fFromReqURI[]$fFromDataInteger$fHasContextReaderT$fHasContextStateT gititstate debugMessagemkUsergenSalt hashPasswordauthUserisUseraddUser adjustUserdelUser writeUserFile isSession setSession newSession delSession getSessiongetDefaultPageType getDefaultLHScalculateWikiBasepAuthorizationHeader pDigestHeader pBasicHeaderstartsWithUnderscoresplitOnexpireCachedFileexpireCachedPDF lookupCache cacheContents readFileUTF8inDir withTempDir createTempDirorIfNullsplitCategoriestrimyesOrNo parsePageTypeencUrl parseMetadatapMetadataBlock pBlankline pMetadataLine adjustPagedashlinedotline hGetLinesTill loadPlugin loadPluginsGithubUserMailemail GithubUsergLoginrCoderStateuserInfomailInfoorgInfosToBS$fFromJSONGithubUserMail$fFromJSONGithubUser$fFromDataGithubCallbackParscatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamefixURLsdefaultRespOptionsrespondrespondXrespondS respondSlides respondLaTeXrespondConTeXt respondRTF respondRSTrespondMarkdown respondPlain respondManrespondTexinforespondDocbook respondOrg respondICMLrespondTextilerespondAsciiDocrespondMediaWiki respondODT respondEPUB respondDocx respondPDF exportFormats pygmentsCss exportBox linkForTabcreateIfMissing currentUserRParsrToken rDestinationValidationType ResetPasswordRegister registerUserresetPasswordRequestFormresetPasswordRequest resetLinksendReregisterEmail validateReset resetPassworddoResetPassword registerFormresetPasswordForm sharedFormsharedValidation loginForm loginUser logoutUserregisterUserForm loginUserHTTPlogoutUserHTTPoauthGithubCallback loginRPXUser$fFromDataRParsreadfile forceEithergetConfigParserFromFiles extractConfigextractGithubConfigfromQuotedMultiline readNumberreadSizesplitCommaListlrStripgetDefaultConfigParserrawTextResponseexportViaPandoc htmlViaPandochighlightRawSourcehandleRedirectscontentsToPageapplyTransformapplyPreParseTransformsapplyPreCommitTransforms updateLayoutconvertWikiLinksrunTransformerpageToWikiPandoc'getPageTransformsgetPreParseTransformsgetPreCommitTransforms readerForwikiLinksTransform changeLog FeedConfigfcTitle fcBaseUrl fcFeedDaysgititGeneratorfilestoreToXmlFeedxmlFeedToString generateFeedgenerateEmptyfeedrevisionToEntryauthorToPersonformatFeedTimeextract handleAny debugHandler randomPage discussPage createPage uploadForm uploadFilegoToPage searchResultsshowPageHistoryshowFileHistory showHistory showActivity showPageDiff showFileDiffshowDiffgetDiffeditPage editPage' confirmDelete deletePage updatePage indexPagefileListToHtml categoryPagecategoryListPage expireCache feedHandlerserveDirectory' wikiHandlers unpackReaderT