úÎ8|4¿B      !"#$%&'()*+,-./0123456789:;<=>?@A6Easily write safe GitHub webhook handlers with Servant (c) Jacob Thomas Errington, 2016MIT)servant-github-webhook@mail.jerrington.me experimentalNone%&+,-9:;<=DQRT /Class of types that can be reflected to values.Convient alias for  that allows us to avoid using  explicitly.-Type function that reflects a kind to a type.-A synonym for strategies producing so-called global) keys, in which the key index is simply ().‰A wrapper for an IO strategy to obtain the signing key for the webhook as configured in GitHub. The strategy is executed each time the "s routing logic is executed.We allow the use of IOv here so that you can fetch the key from a cache or a database. If the key is a constant or read only once, just use B. The type key used here must correspond with  k where k1 is the kind whose types are used as indices in ".[If you don't care about indices and just want to write a webhooks using a global key, see  which fixes key to () and use $4, which fills the newtype with a constant function. ]A routing combinator that succeeds only for a webhook request that matches one of the given  given in the type-level list events.If the list contains #, then all events will be matched.@The combinator will require that its associated handler take a  parameter, and the matched event will be passed to the handler. This allows the handler to determine which event triggered it from the list..Other routes are tried if there is a mismatch.!+A convenient alias for a trivial key index."Convenient synonym for #B that computes its first type argument given just the second one.#A clone of Servant's CV combinator, except that it will also verify the signature provided by GitHub in the X-Hub-SignatureF header by computing the SHA1 HMAC of the request body and comparing.XThe use of this combinator will require that the router context contain an appropriate - entry. Specifically, the type parameter of  must correspond with Demote k$ where k is the kind of the index ;key@ used here. Consequently, it will be necessary to use D instead of E.aOther routes are not tried upon the failure of this combinator, and a 401 response is generated.MUse of this datatype directly is discouraged, since the choice of the index key determines k and hence proxy. Instead, use "0, which computes the proxy argument given just 0key$. The proxy argument is necessary to avoid 5UndecidableInstances@ for the implementation of the F instance for the datatype.$Smart constructor for , for a so-called global key.%$Helper that parses a header using a G7 instance and discards the parse error message if any.&cDetermines whether a given webhook event matches a given raw representation of one. The result is H7 if there is no match. This function accounts for the } matching everything, so it returns the result of parsing the raw representation when trying to match against the wildcard.* !"#$%&'()*+,-./0123456789:;<=>?@A'  !"#$%&'#"! $ %&' !"#$%&'()*+,-./0123456789:;<=>?@AI      !"!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMKLNKOPQRSFTU4servant-github-webhook-0.2.0.0-g5aQo6WHZt7sAFGm5AFS1Servant.GitHub.Webhookbase Data.ProxyKProxy#github-0.15.0-3q5zi4roMYVrETtEXXEsOGitHub.Data.WebhooksWebhookWatchEventWebhookTeamAddEventWebhookStatusEventWebhookReleaseEventWebhookPushEventWebhookPullRequestEvent$WebhookPullRequestReviewCommentEventWebhookPublicEventWebhookPingEventWebhookPageBuildEventWebhookMemberEventWebhookIssuesEventWebhookIssueCommentEventWebhookGollumEventWebhookForkEventWebhookDeploymentStatusEventWebhookDeploymentEventWebhookDeleteEventWebhookCreateEventWebhookCommitCommentEventWebhookWildcardEventRepoWebhookEventReflectreflectDemoteDemote' GitHubKey GitHubKey' unGitHubKey GitHubEventGitHubSignedReqBodyGitHubSignedReqBody'GitHubSignedReqBody'' gitHubKeyparseHeaderMaybe matchEvent*$fReflectRepoWebhookEventWebhookWatchEvent,$fReflectRepoWebhookEventWebhookTeamAddEvent+$fReflectRepoWebhookEventWebhookStatusEvent,$fReflectRepoWebhookEventWebhookReleaseEvent)$fReflectRepoWebhookEventWebhookPushEvent0$fReflectRepoWebhookEventWebhookPullRequestEvent=$fReflectRepoWebhookEventWebhookPullRequestReviewCommentEvent+$fReflectRepoWebhookEventWebhookPublicEvent)$fReflectRepoWebhookEventWebhookPingEvent.$fReflectRepoWebhookEventWebhookPageBuildEvent+$fReflectRepoWebhookEventWebhookMemberEvent+$fReflectRepoWebhookEventWebhookIssuesEvent1$fReflectRepoWebhookEventWebhookIssueCommentEvent+$fReflectRepoWebhookEventWebhookGollumEvent)$fReflectRepoWebhookEventWebhookForkEvent5$fReflectRepoWebhookEventWebhookDeploymentStatusEvent/$fReflectRepoWebhookEventWebhookDeploymentEvent+$fReflectRepoWebhookEventWebhookDeleteEvent+$fReflectRepoWebhookEventWebhookCreateEvent2$fReflectRepoWebhookEventWebhookCommitCommentEvent-$fReflectRepoWebhookEventWebhookWildcardEvent $fReflect[]: $fReflect[][] $fReflect()()$fReflectSymbols$fHasServerTYPE:>context$fHasServerTYPE:>context0GHC.Basepure$servant-0.8.1-Ga6f6nHiymQDF907fMbQXAServant.API.ReqBodyReqBody+servant-server-0.8.1-GUMlTlw7hR5Dw1AQsQZa0oServant.ServerserveWithContextserveServant.Server.Internal HasServer*http-api-data-0.2.4-A4wmVZwK1Z2E7FLv3snrr5Web.HttpApiData.InternalFromHttpApiDataNothing