úÎ((%ä)      !"#$%&'(SafeNoneCShared HTTP manager. Cache for the access token. Use  accessToken when within the e monad to access the token. That function will automatically refresh it when it is about to expire.7The action which is used to fetch a fresh access token. Evaluate a  action and return either the  or the result.+Transform an synchronous exception into an ?. Async exceptions are left untouched and propagated into the ) monad.Run an ) action inside the B monad, catch all synchronous exceptions and transform them into s.Retry a / action multiple times before failing for good.qTODO: - Make the retry count configurable - Increase backoff after each failure - Add jitter to the backoff       NoneNoneÍFetch the access token for the default service account from the local metadata server. This only works when the code is running in the Google cloud and the instance has a services account attached to it.ÿ8Store the token in the cache. If the cache already contains a token, the better one of the two is actually stored (where *better* is defined as the one which expires later). So it is safe to call this function even if you are unsure if the token you have is better than the one which is already in the cache.Returns the better token.ÑReturn the value of the access token. The function guarantees that the token is valid for at least 60 seconds. Though you should not be afraid to call the function frequently, it caches the token inside the  # so there is very little overhead. Construct a *y that contains the authorization details. Such a header needs to be supplied to all requsts which require authorization.SNot all requests require it. In particular, requests to the metadata server don't.None& Upload a + to a #<. This is the simplest function to upload something into a #. !"#$%& !"#$%&#$% !"& !"#$%&None' Create a new  9 with sensible defaults. The defaults are such that the  Z works out of the box when the application is running on an instance in the Google cloud.( Create a new  % with your own configuration options.'('('('(,      !"#$$%&&'()*+,-./01234googl_Bju0MHLK0H3GkcrTXifD7NGoogle.Cloud.Internal.MetadataGoogle.Cloud.Internal.TypesGoogle.Cloud.Internal.HTTPGoogle.Cloud.Internal.TokenGoogle.Cloud.Storage Google.CloudmetadataServerCloudrunCloudError UnknownErrorIOError DecodeErrorTokentokenExpiresAt tokenValueHandlehManagerhToken hFetchToken evalCloudtransformExceptioncloudIOretry$fAlternativeCloud runRequestpostgetgetJSONtokenUrldefaultMetadataToken cacheToken refreshToken accessTokenauthorizationHeaderNameunNameBucketunBucket uploadMedia createHandlemkHandleghc-prim GHC.TypesIOhttpt_K1GcYiiEBxaBOQVfjX52vaNetwork.HTTP.Types.HeaderHeaderbytes_6elQVSg5cWdFrvRnfxTUrHData.ByteString.Internal ByteString