úÎ: 7$&      !"#$% ESession keys are 64-bit integers with standard numeric type classes. GSets a cookie in both the request and the response. This modifies the O list of cookies in the request, so that later attempts to get cookies will 0 find this one even within the same request. IRetrieves a cookie, looking first in the response map, and if not there, L then in the request. This ensures that the most recently set cookie is  retrieved. HClears a cookie. This involves setting the cookie to the empty string, ) with an expiration time in the past. HIf there is another path component in the request path, pop it off, and + pass it as a parameter to the handler. Ensure that we':re at the top level of a request, and expect that it be a L directory. As with standard HTTP behavior, if a path to a directory is # given and the request URI doesn'#t end in a slash, then the user is , redirected to a path ending in a slash. Ensure that we':re at the top level of a request, and expect that it be a A file. If a trailing slash is given, we pass on the request. JGenerates a random key that is not already used in the given map. Though M not technically speaking guaranteed to terminate, this should be fast in  practice.    IThis type class captures all Snap-related monads that contain a session. DThe type of the session object. In principle, this may be any type O that you want. However, implementations or other extensions maybe put F additional restrictions on the type (for example, the session  implementation in Snap.Extension.Session.Client requires that the ' session type be an instance of Data.Serialize.Serialize. @Insert this into your routes to renew sessions on each request.      &'()*+,4Determines whether a session is still valid or not. -*Monadic while statement, for convenience. .Creates a new SessionManager. to manage a sessions in the web application. L This also spawns the session reaper, which cleans up sessions that haven't * been touched for a given time period. /DCloses a SessionManager, which will cause it to cease accepting any H incoming requests, and also to terminate the session reaper thread. 0Adds a  0 and associated cookie. This always sets a new L blank session, so should only be used when there is no session already. 12Ensures that there is a  ) in place, and returns it. Adds a blank P one if necessary. This also updates the last touched time for the session, G preventing it from being removed by the reaper thread for a while. 3456789:; A value of @ type represents a way of rendering a page, given a request URI V that should be used for subsequent requests in order to reassociate them with the  current dialogue.  A value of a 5 type represents a dialogue between the user and the D application, after which the application builds a value of type a. The O trivial case is that the value is already known. Alternatively, it may be N that there is some action to be performed, or else that the user needs to  be asked or told something. <=> !"?@#$GConverts methods for rendering and parsing the result of a page into a   step. ABC% !"#$%"# !$% !!"#$%D      !"#$%&'()*+,-.//0123456789":;<=>?@A(BCDEFmysnapsession-0.4Snap.SessionUtilSnap.Extension.SessionSnap.Extension.Session.MemorySnap.Extension.Session.ClientSnap.Dialogues SessionKeyK setCookie lookupCookie clearCookie popPathToifTopDir ifTopFile uniqueKey MonadSessionSession getSession setSession clearSession touchSession inSession withSessiongetFromSessiondeleteFromSession setInSessionmemorySessionMgr MemorySessionHasMemorySessionManagerMemorySessionManagermemorySessionInitializerclientSessionMgr ClientSessionHasClientSessionManagerClientSessionManagerclientSessionInitializerPageDlg HasDlgManager getDlgManager DlgManagermakeDlgManagershowPagedialogue sessionObjectsessionLastTouched sessionClientSessionWrapper goodSessionwhileMmakeSessionManagercloseSessionManager addSessiongetExistingSession getAnySessionclientSessionTimeoutclientSessionDefaultclientSessionKey SessionRecord valToRecord recordToValgetSessionRecordputSessionRecordStepActionDone unDlgManagerdlgTokenfindDlghandle