h*k^\6      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0.10.0  Safe-Inferred" f Safe-Inferred" ,pantryAn ' value using the default global managerpantryWrap custom exceptions*NOTE: The only other exception defined in  http-client is TimeoutTriggered but it is currently disabled 2https://github.com/snoyberg/http-client/issues/116pantrySet request headerspantryExtract the response headers Safe-Inferred" pantryEnsure that only one process is trying to write to the database at a time. See  6https://github.com/commercialhaskell/stack/issues/4471 and comments above.pantry(Database description, for lock messages.pantryInitial migration.pantrySQLite database file.pantry What to do with the initialised .pantry'Database description, for lock messagespantrySQLite database file Safe-Inferred"'()*16 pantry3A tree that has already been stored in the databasepantryThis is a helper type to distinguish db queries between different rdbms backends. The important part is that the affects described in this data type should be semantically equivalent between the supported engines.pantry"A query that is specific to SQLitepantry&A query that is specific to PostgreSQLpantryThis function provides a way to create queries supported by multiple sql backends.pantry5Pull all hackage cabal entries from the database as RawPackageLocationImmutable. We do a manual join rather than dropping to raw SQL, and Esqueleto would add more deps.pantry;Get the filename for the cabal file in the given directory.If no .cabal file is present, or more than one is present, an exception is thrown via .If the directory contains a file named package.yaml, hpack is used to generate a .cabal file from it.pantry Similar to 2 but doesn't require a new connection to database.pantryEnsure that all blobs needed for this package are present in the cachepantry storage filepantry"For some x, yield blob whose id>x.pantry$For some x, yield cabals whose id>x.pantryfor exceptionspantryfor exceptionspantryfor exceptionspantryfor exceptionspantryURLpantrysubdirpantryURLpantrysubdirpantrysubdirpantrypackage directorypantryfor exceptionspantryfor exceptionspantryfor exceptionspantry&dest dir, will be created if necessary Safe-Inferred%pantryLookup a tree.pantry*Lookup a single blob. If possible, prefer , and query a group of keys at once, rather than one at a time. This will have better network performance.pantryA source of blobs given a set of keys. All blobs are automatically stored in the local pantry database.  Safe-Inferred(wpantryA helper function that performs the basic character encoding necessary.pantry&dest dir, will be created if necessary  Safe-Inferred"pantryProvide a local file with the contents of the archive, regardless of where it comes from. If not downloading, checks that the archive file exists. Performs SHA256 and file size validation.pantryAttempt to parse the contents of the given archive in the given subdir into a 8. This will not consult any caches. It will ensure that:The cabal file existsThe cabal file can be parsedThe name inside the cabal file matches the name of the cabal file itselfpantryFind all of the files in the Map with the given directory as a prefix. Directory is given without trailing slash. Returns the suffix after stripping the given prefix.pantry/If all files have a shared prefix, strip it offpantry*Take us down to the specified subdirectorypantryfor exceptionspantryfor exceptionspantryfor exceptionspantryfor error reportingpantryfor exceptionspantryfile holding the archivepantryfor exceptionspantrysubdirpantry#files after stripping common prefix  Safe-Inferred"$pantry,Require that the Hackage index is populated.pantryIf there is nothing in the Hackage index, then perform an updatepantryDo not perform an updatepantry8Should we pay attention to Hackage's preferred versions?pantry"Package download info from HackagepantryInformation returned by pantry,Package that was loaded from Hackage tarballpantryThis information is only available whenever package was just loaded into pantry.pantry!Did an update occur when running ?pantryThe name of the tar file that is part of the local cache of the package index is determined by this package's use of # as the layout of the local cache.pantry>Where does pantry download its 01-index.tar file from Hackage?pantryDownload the most recent 01-index.tar file from Hackage and update the database tables.3This function will only perform an update once per  for user sanity. See the return value to find out if it happened.pantrySame as , but force the database update even if hackage security tells that there is no change. This can be useful in order to make sure the database is in sync with the locally downloaded tarballpantry:Populate the SQLite tables with Hackage index information.pantry#Load or download a blob by its SHA.pantryGiven package identifier and package caches, return list of packages with the same name and the same two first version number components found in the caches.pantryTry to come up with typo corrections for given package identifier using Hackage package names. This can provide more user-friendly information in error messages.pantry9Returns the versions of the package available on Hackage.pantry9Returns the versions of the package available on Hackage.pantryreason for updating, if anypantryForce the database update.pantryreason for updating, if anypantrytarballpantrywhere to start processing frompantry package namepantry package namepantrypackage versionpantrycabal file contents Safe-Inferred%0aa  Safe-Inferred'pantryFalse if not using Windows OS.  Safe-Inferred"%&+ppantryLike , except with Z instead of V.pantryFetch the given repositories at once and populate the pantry database.pantryFetch a repository and create a (temporary) tar archive from it. Pass the path of the generated tarball to the given action.pantryRun a git command, setting appropriate environment variable settings. See  6https://github.com/commercialhaskell/stack/issues/3748.pantryRun an hg commandpantry3Create a tarball containing files from a repositorypantryClone the repository (and, in the case of Git and if necessary, fetch the specific commit) and execute the action with the working directory set to the repository root.pantry (package, subdir)pantryargspantryargspantryOutput tar archive filename Safe-Inferred"W=pantryConvenient data type that allows you to work with pantry more easily than using  or  directly. Uses basically sane settings, like sharing a pantry directory with Stack. You can use " to use this. A simple example is: {-# LANGUAGE OverloadedStrings #-} module Main (main) where -- From package Cabal-syntax import Distribution.Types.Version ( mkVersion ) -- From package pantry import Pantry ( CabalFileInfo (..), PackageIdentifierRevision (..), PantryApp , RawPackageLocationImmutable (..), loadPackageRaw, runPantryApp ) -- From package rio import RIO ( RIO, liftIO ) main :: IO () main = runPantryApp myPantryApp myPantryApp :: RIO PantryApp () myPantryApp = loadPackageRaw baseLocation >>= liftIO . print where baseVersion = mkVersion [4, 19, 0, 0] basePkgId = PackageIdentifierRevision "base" baseVersion CFILatest baseLocation = RPLIHackage basePkgId Nothingpantry!Package settings to be passed to .pantryA completed snapshot location, including the original raw and completed information.pantryA completed package location, including the original raw and completed information.pantryComplete package location, plus whether the package has a cabal file. This is relevant to reproducibility, see >https://tech.fpcomplete.com/blog/storing-generated-cabal-filespantry Create a new  with the given settings. For a version where Hpack's approach to overwriting Cabal files is configurable and the use of Casa (content-addressable storage archive) is optional, see .1For something easier to use in simple cases, see .pantry Create a new  with the given settings.1For something easier to use in simple cases, see .pantryDefault pull URL for Casa.pantry%Default max keys to pull per request.pantryDefault ) value using the official Hackage server.pantry4The download prefix for the official Hackage server.pantryReturns the latest version of the given package available from Hackage.pantryReturns location of the latest version of the given package available from Hackage.pantryReturns the latest revision of the given package version available from Hackage.pantryFetch keys and blobs and insert into the database where possible.pantryDownload all of the packages provided into the local cache without performing any unpacking. Can be useful for build tools wanting to prefetch or provide an offline mode.pantryUnpack a given  into the given directory. Does not generate any extra subdirectories.pantryUnpack a given  into the given directory. Does not generate any extra subdirectories.pantry"Load the cabal file for the given .#This function ignores all warnings.pantry"Load the cabal file for the given .#This function ignores all warnings.Note that, for now, this will not allow support for hpack files in these package locations. Instead, all PackageLocationImmutables will require a .cabal file. This may be relaxed in the future.pantrySame as , but takes a . Never prints warnings, see  for that.pantrySame as , but takes a . Never prints warnings, see  for that.pantryParse the Cabal file for the package inside the given directory. Performs various sanity checks, such as the file name being correct and having only a single Cabal file.pantry6789:12345+,-./0%&'()* !"#$GHIJDEF NOPKLMfghijklmnopqrstuvwxyz{|}~bcde TUa _`Z[\]^VWXYQRS?@ABC;<=>6789:12345+,-./0%&'()* !"#$GHIJDEF NOP ! " # $ $ % & & ' ( ) * + , - . / / 0 1 2 3 4 5 6 7 8 8 9 : ; < = = > ? @ A B B C D E F F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ] ^ _ ` a b b c c d e f f g h i j j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                           j                                                        #pantry-0.10.0-J7zAi0jMFhm9PwTCi4SdYPantryPantry.Internal.Stackage Pantry.SQLitepantry Pantry.HTTP5Hackage.Security.Client.Repository.HttpLib.HttpClientPantry.Storage Pantry.Casa Pantry.TreePantry.ArchivePantry.HackageSystem.IsWindows Pantry.RepoCabal-syntax-3.10.1.0Distribution.Types.VersionVersionDistribution.Types.PackageName PackageNameDistribution.Types.PackageIdPackageIdentifierpkgName pkgVersionDistribution.Types.FlagFlagName#hpack-0.36.0-47EpdiJiwT3AKrVRSja4VS Hpack.OptionsForceNoForce,pantry-0.10.0-J7zAi0jMFhm9PwTCi4SdY-internal Pantry.SHA256SHA256 Pantry.TypesGlobalHintsLocationGHLUrl GHLFilePathSnapshotCacheHashunSnapshotCacheHash SnapshotLayerslParent slCompiler slLocationsslDropPackagesslFlagsslHidden slGhcOptions slPublishTimeRawSnapshotLayer rslParent rslCompiler rslLocationsrslDropPackagesrslFlags rslHidden rslGhcOptionsrslPublishTimeSnapshotPackage spLocationspFlagsspHidden spGhcOptionsRawSnapshotPackage rspLocationrspFlags rspHidden rspGhcOptionsSnapshotsnapshotCompilersnapshotPackages snapshotDrop RawSnapshot rsCompiler rsPackagesrsDropSnapshotLocation SLCompilerSLUrl SLFilePathRawSnapshotLocation RSLCompilerRSLUrl RSLFilePath RSLSynonymSnapNameLTSNightlyWantedCompilerWCGhcWCGhcGitWCGhcjsHpackExecutable HpackBundled HpackCommand CabalString unCabalStringArchiveLocationALUrl ALFilePath RelFilePathPackageMetadatapmIdent pmTreeKeyRawPackageMetadatarpmName rpmVersion rpmTreeKeyTreeKey SafeFilePath FuzzyResultsFRNameNotFoundFRVersionNotFoundFRRevisionNotFoundPantryException"PackageIdentifierRevisionParseFailInvalidCabalFileTreeWithoutCabalFileTreeWithMultipleCabalFilesMismatchedCabalNameNoLocalPackageDirFoundNoCabalFileFoundMultipleCabalFilesFoundInvalidWantedCompilerInvalidSnapshotLocationInvalidOverrideCompilerInvalidFilePathSnapshotInvalidSnapshotInvalidGlobalHintsLocationInvalidFilePathGlobalHintsMismatchedPackageMetadataNon200ResponseStatusInvalidBlobKeyCouldn'tParseSnapshotWrongCabalFileNameDownloadInvalidSHA256DownloadInvalidSizeDownloadTooLargeLocalNoArchiveFileFoundLocalInvalidSHA256LocalInvalidSizeUnknownArchiveTypeInvalidTarFileTypeUnsupportedTarballNoHackageCryptographicHashFailedToCloneRepoTreeReferencesMissingBlobCompletePackageMetadataMismatch CRC32MismatchUnknownHackagePackageCannotCompleteRepoNonSHA1MutablePackageLocationFromUrlMismatchedCabalFileForHackagePackageNameParseFailPackageVersionParseFailInvalidCabalFilePathDuplicatePackageNamesMigrationFailure NoCasaConfigInvalidTreeFromCasaParseSnapNameExceptionHpackLibraryExceptionHpackExeExceptionMismatchmismatchExpectedmismatchActualPackageIdentifierRevision CabalFileInfo CFILatestCFIHash CFIRevision ModuleNameP unModuleNamePVersionP unVersionP PackageNamePunPackageNamePBlobKeyFileSizeHasPantryConfig pantryConfigLHackageSecurityConfig hscKeyIdshscKeyThresholdhscIgnoreExpiryPackageIndexConfigpicDownloadPrefixpicHackageSecurityConfig SimpleReposRepoUrl sRepoCommit sRepoTypeReporepoUrl repoCommitrepoType repoSubdirRepoTypeRepoGitRepoHgArchivearchiveLocation archiveHash archiveSize archiveSubdir RawArchive raLocationraHashraSizeraSubdirPackageLocationImmutable PLIHackage PLIArchivePLIRepoRawPackageLocationImmutable RPLIHackage RPLIArchiveRPLIRepoPackageLocation PLImmutable PLMutableRawPackageLocation RPLImmutable RPLMutable ResolvedPathresolvedRelativeresolvedAbsolute Unresolved PrintWarningsYesPrintWarningsNoPrintWarnings PantryConfigpcPackageIndexpcHpackExecutable pcHpackForce pcRootDir pcStorage pcUpdateRefpcParsedCabalFilesRawImmutablepcParsedCabalFilesMutablepcConnectionCount pcCasaConfigpcSnapshotLocationpcGlobalHintsLocationStorage withStorage_withWriteLock_RevisionPackagepackageTreeKey packageTreepackageCabalEntry packageIdentsnapshotLocation resolvePathstoRawPLdefaultHackageSecurityConfigparseHackageTextparsePackageIdentifierRevisionunSafeFilePathmkSafeFilePathparsePackageIdentifierparsePackageNameparsePackageNameThrowing parseVersionparseVersionThrowing parseFlagNamepackageNameStringpackageIdentifierString versionStringflagNameStringmoduleNameStringtoCabalStringMapunCabalStringMapparseWantedCompilerparseRawSnapshotLocationdefaultSnapshotLocationdefaultGlobalHintsLocation parseSnapNametoRawSLtoRawSnapshotLayerwarnMissingCabalFile*persistent-2.14.6.1-DvicwqEqfaKJCkhdmNCrTA$Database.Persist.Class.PersistEntityKey EntityFieldUnique initStorage ModuleNameId TreeEntryIdTreeIdTreetreeKey treeCabal treeCabalTypetreeName treeVersionHackageCabalId VersionIdversionVersion PackageNameIdBlobId UniqueModuleModuleNameNamePackageExposedModuleId!PackageExposedModuleSnapshotCachePackageExposedModuleModulePackageExposedModulePackageUniqueSnapshotCacheSnapshotCacheIdSnapshotCacheSha RepoCacheId RepoCacheTime RepoCacheUrl RepoCacheTypeRepoCacheCommitRepoCacheSubdir RepoCacheTreeArchiveCacheIdArchiveCacheTimeArchiveCacheUrlArchiveCacheSubdirArchiveCacheShaArchiveCacheSizeArchiveCacheTree TreeEntryTree TreeEntryPath TreeEntryBlob TreeEntryType UniqueHPackHPackId HPackTree HPackVersionHPackCabalBlobHPackCabalPath UniqueTree TreeCabal TreeCabalTypeTreeName TreeVersion CacheUpdateIdCacheUpdateTimeCacheUpdateSizeCacheUpdateShaUniquePreferredPreferredVersionsIdPreferredVersionsNamePreferredVersionsPreferred UniqueHackageHackageCabalNameHackageCabalVersionHackageCabalRevisionHackageCabalCabalHackageCabalTreeUniqueHackageTarballHackageTarballIdHackageTarballNameHackageTarballVersionHackageTarballShaHackageTarballSize UniqueSfp FilePathId FilePathPath UniqueVersionVersionVersionUniquePackageNamePackageNameName UniqueUrlTime UrlBlobId UrlBlobUrl UrlBlobBlob UrlBlobTime UniqueBlobSha unBlobKeyBlobShaBlobSize BlobContents migrateAllgetPackageNameByIdgetPackageNameId getVersionId storeBlob loadBlobByIdallBlobsSource"allHackageCabalRawPackageLocations allBlobsCountallHackageCabalCount getBlobKey getTreeForKeyRequireHackageIndexYesRequireHackageIndexNoRequireHackageIndexUsePreferredVersionsIgnorePreferredVersionsHackageTarballResult htrPackagehtrFreshPackageInfoDidUpdateOccurUpdateOccurredNoUpdateOccurredhackageIndexTarballLupdateHackageIndexforceUpdateHackageIndexgetHackageTypoCorrectionsgetHackagePackageVersionsgetHackageTarball fetchReposRaw fetchReposwithRepo PantryAppAddPackagesConfigapcDropapcFlags apcHiddens apcGhcOptions CompletedSL CompletedPLICompletePackageLocation cplCompletecplHasCabalFilewithPantryConfigwithPantryConfig'defaultCasaRepoPrefixdefaultCasaMaxPerRequestdefaultPackageIndexConfigdefaultDownloadPrefixgetLatestHackageVersiongetLatestHackageLocationgetLatestHackageRevision fetchPackagesunpackPackageLocationRawunpackPackageLocationloadCabalFileImmutableloadCabalFileRawImmutableloadCabalFileRaw loadCabalFileloadCabalFilePathfindOrGenerateCabalFilegpdPackageIdentifiergpdPackageName gpdVersion loadPackageloadPackageRawtryLoadPackageRawViaCasacompletePackageLocationcompleteSnapshotLocation loadSnapshotloadAndCompleteSnapshotloadAndCompleteSnapshot'loadAndCompleteSnapshotRawloadAndCompleteSnapshotRaw'addPackagesToSnapshotloadRawSnapshotLayerloadSnapshotLayergetPackageLocationNamepackageLocationIdentpackageLocationVersiongetRawPackageLocationIdentgetRawPackageLocationTreeKeygetPackageLocationTreeKeyhpackExecutableL hpackForceL runPantryApprunPantryAppWithrunPantryAppCleanloadGlobalHintspartitionReplacedDependencieswithSnapshotCache$fSemigroupSingleOrNot$fHasTermPantryApp$fHasStylesUpdatePantryApp$fHasProcessContextPantryApp$fHasPantryConfigPantryApp$fHasLogFuncPantryApp'http-types-0.12.4-7ravU9ZeEhYD9G3h69uf3Network.HTTP.Types.HeaderHeader)http-client-0.7.17-9T7UU8x7JKy9AnPgPCUD0SNetwork.HTTP.Client.Types BodyReaderNetwork.HTTP.Types.StatusStatus statusCodeResponseRequestHttpExceptionContentStatusCodeException HttpExceptionHttpExceptionRequestInvalidUrlException HeaderNameNetwork.HTTP.Client.Request parseUrlThrow parseRequestsetUridefaultRequest+http-conduit-2.3.8.3-22E9ySnN6ZEC4KEDpOH5v2Network.HTTP.SimpleaddRequestHeadersetRequestHeadergetResponseStatusgetResponseHeadersgetResponseBody hCacheControlhRangeok200partialContent206 withResponsehttpSinkhttpSinkCheckedhttpLib/hackage-security-0.6.2.5-I9F3quS7HeA9GvmM6AW4yo*Hackage.Security.Client.Repository.HttpLibHttpLib wrapCustomExsetRequestHeaders withWriteLock CachedTree RdbmsActionsraSqlite raPostgresrdbmsAwareQueryexceptions-0.10.7Control.Monad.CatchthrowM hpackToCabalS hpackToCaballoadCachedTree generateHPack storeTreeloadPackageByIdloadHackageTreestoreArchiveCacheloadArchiveCachestoreRepoCacheunpackTreeToDir$Database.Persist.SqlBackend.Internal SqlBackend withStorageloadBlob loadBlobBySHA loadURLBlob storeURLBlobclearHackageRevisionsstoreHackageRevisionloadHackagePackageVersionsloadHackagePackageVersionloadLatestCacheUpdatestoreCacheUpdatestoreHackageTarballInfoloadHackageTarballInfogetHPackBlobKeyByIdloadTree storeHPackstoreHackageTreeloadHackageTreeKey loadRepoCachestorePreferredVersionloadPreferredVersionsinkHackagePackageNamesloadCabalBlobKeycountHackageCabalsgetSnapshotCacheByHashgetSnapshotCacheIdstoreSnapshotModuleCacheloadExposedModulePackages HackageCabalhackageCabalNamehackageCabalVersionhackageCabalTreehackageCabalRevisionhackageCabalCabal TreeEntry treeEntryTree treeEntryPath treeEntryBlob treeEntryType CachedTreeMap unCachedTreecasaLookupTree casaLookupKeycasaBlobSource rawParseGPD unpackTreewithArchiveLoc parseArchivefindWithPrefixstripCommonPrefix takeSubdir getArchiveKeygetArchivePackage getArchive foldArchivefoldTarfindCabalOrHpackFilefetchArchivesRaw fetchArchivesPackageDownload indexRelFile!Hackage.Security.TUF.Layout.CachecabalCacheLayout populateCacheloadOrDownloadBlobBySHAfuzzyLookupCandidates!getHackagePackageVersionRevisionsupdateHackageIndexInternalwithCachedTreegetHackageTarballKeygetHackageCabalFile osIsWindowswithRepoArchive runGitCommand runHgCommandcreateRepoArchive getRepos'getRepo getRepoKey fetchTreeKeyshpack,Distribution.Types.GenericPackageDescriptionGenericPackageDescriptiontryLoadPackageRawViaDbOrCasatryLoadPackageRawViaLocalDbloadSnapshotRawwarnUnusedAddPackagesConfig addAndCompletePackagesToSnapshotbase Data.EitherLeftRightpluraltraverseConcurrently_traverseConcurrentlyWith_ loadFromURLloadUrlViaCasaOrWithCheck loadWithCheck